web-dev-qa-db-ja.com

Gitブランチをマスターにマージ

マスターブランチとbranch_1が動作しています。 masterと同じようにbranch_1を「移動」したい。だから私はこのようなものが欲しい:

git checkout master
git merge branch_1 # I don't know what is correct...

私がやったことですが、迷惑な競合で混乱したファイルを大量に取得しました。そのため、マスターにはbranch_1とまったく同じファイルが含まれ、競合を回避し、ファイルを上書きするだけです。何か助け?

42
Trt Trt

両方のブランチにファイルへの変更がある場合、競合が発生します。これは良いことです。 ブランチを互いに最新の状態に保つと、それらの一部が防止されます。ただし、全体として、競合は悪くありません。 rebaseオプションは、それらの多くが発生するのを防ぐこともできます。

git merge branch_1

masterを使用している場合、マージすると期待どおりに変更が反映されます。

http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

あなたもできます

git rebase branch_1

これにより、branch_1そして、マージコミットせずにそれらをマスターに追加します。

http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html

50
Schleis

たぶんあなたはマージすべきではないのですか?

  1. チェックアウトbranch_1
  2. マスターの変更をbranch_1にリベースします
  3. コードのテスト後に発生した可能性のあるエラーを修正します
  4. チェックアウトマスター
  5. Branch_1の変更をマスターにリベースします

またはコード内:

git checkout branch_1
git rebase master
(...)
git checkout master
git rebase branch_1

また、これにより、変更セットの密度を高めたい場合に、複数のコミットを1つにまとめる機会が与えられ、これらの厄介なマージコミットが履歴に残るのを防ぎます。

3
sjas