(一種の)3方向の競合解決を使用して、常にgitを強制的にマージしたいと思います。しかも、単線も選べるようにしたい。
現在、2 つのブランチをマージしています。ただし、可能であれば、複数のブランチをマージする場合でも、このタスクを実行する方法を知りたいです。
(一種の)3方向の競合解決を使用して、常にgitを強制的にマージしたいと思います。しかも、単線も選べるようにしたい。
現在、2 つのブランチをマージしています。ただし、可能であれば、複数のブランチをマージする場合でも、このタスクを実行する方法を知りたいです。
Git はデフォルトで 3 方向のマージを試みます ( recursive
2 つのヘッドのoctopus
戦略と 3 つ以上のヘッドの戦略)。
手動でマージするときに 3 方向の解像度オプションを表示する場合は、 merge.conflictstyle
config オプションを に設定してみてくださいdiff3
。
(そのオプションの詳細については、 git-merge
man ページの「構成」セクションを参照してください。)
ブログ投稿「5 つの高度な Git マージ手法」では、diff3 設定についてさらに詳しく説明しています。
を使用して diff3 の競合を有効にし
git config --global merge.conflictstyle diff3
ます。diff3 競合スタイルは、新しいマーカーとマーカー
の間に追加のセクションを追加します。これは、次のことを示します。|||||||
=======
- セクションの元の内容、
- 上記の変更と
- それらの (マージされているブランチ) 以下の変更。
diff ツールがなくても、このコマンドgit show
は役に立ちます。
マージの内部では、特殊な
:N:
構文 (N
は数字) を使用して、マージの親の 1 つを自動的に選択できます。
1
共通ベースコミット (下位リビジョン) を選択し、2
バージョン (" mine
") を選択し、3
バージョン (より高いリビジョン) を選択します。So
git show :3:foobar.txt
のアップストリーム バージョンを示しますfoobar.txt
。