を使用してトピック ブランチ「B」を「A」にマージするとgit merge
、いくつかの競合が発生します。すべての競合は「B」のバージョンを使用して解決できることはわかっています。
は承知していますgit merge -s ours
。しかし、私が欲しいのは のようなものですgit merge -s theirs
。
なぜ存在しないのでしょうか? 既存のgit
コマンドとの競合マージ後に同じ結果を得るにはどうすればよいですか? ( git checkout
B からのマージされていないすべてのファイル)
ブランチ A (ツリーの B バージョンへのマージ コミット ポイント) からすべてを破棄するだけの「解決策」は、私が探しているものではありません。
ベストアンサー1
同様の代替として、--strategy-option
(短縮形-X
)オプションがあり、 を受け入れますtheirs
。例:
git checkout branchA
git merge -X theirs branchB
-X ours
ただし、これは よりもと同等です-s ours
。主な違いは、 は-X
通常の再帰マージを実行し、選択された側を使用して競合を解決するのに対し、 は-s ours
マージを変更して、もう一方の側を完全に無視することです。
場合によっては、-X theirs
仮想の代わりに使用することで主な問題となる-s theirs
のは、削除されたファイルです。この場合は、git rm
削除されたファイルの名前を指定して実行します。
git rm {DELETED-FILE-NAME}
その後は-X theirs
期待通りに動作するはずです。
もちろん、git rm
コマンドを使用して実際の削除を実行すると、そもそも競合が発生するのを防ぐことができます。