1. ホーム
  2. git

[解決済み] git merge -s ours "の "theirs "バージョンはありますか?

2022-03-10 09:17:33

質問

トピックブランチ "B" を "A" にマージする場合、次のようにします。 git merge コンフリクトが発生します。すべてのコンフリクトは"B"のバージョンを使用して解決できることは知っています。

私が知っているのは git merge -s ours . しかし、私が欲しいのは、次のようなものです。 git merge -s theirs .

なぜ存在しないのでしょうか?どうすれば、既存の git コマンドを使用できますか?( git checkout Bからマージされていないすべてのファイル)

Aブランチ(Bバージョンのツリーへのマージコミット点)からのものをすべて破棄するという"solution"は、私が求めているものではありません。

どのように解決するのですか?

同様の代替案として --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 コマンドを使えば、そもそもコンフリクトが起きないようにすることができます。