私はGUIでこれを行う方法の見当がつかないが、コマンドラインで:
git checkout HEAD -- path1 path2 path3 path4 ...
( "私たち" バージョンをとる)または:
git checkout MERGE_HEAD -- path1 path2 path3 path4 ...
(とり"theirs"バージョン)。
「私たち」バージョンの場合は、ちょうど、(あなたの説明のように)欠失である:にインデックスを設定するには
git rm path1 path2 ...
「の解像度は、ファイルを削除することです」。
編集は(2つのコメントの後に)追加します。git checkout --ours
とgit checkout --theirs
もgit checkout HEAD
とgit checkout MERGE_HEAD
の代わりに使用することができます。違いは1つあります。競合するマージの途中にある場合、インデックスには、競合があるpath
のステージングスロット1,2、および/または3のエントリが含まれています。コンフリクトしていないパスの場合、インデックスにはステージゼロのエントリしかありません。指定されたは(コミットに関連付けられた木から、より正確に)をコミットからHEAD
またはMERGE_HEAD
からチェックアウトすると、ファイルを抽出しながら、はエントリを上演--ours
か--theirs
抽出してチェックアウト。
ステージ1のエントリはマージベース、ステージ2は--ours
、ステージ3は--theirs
です。競合が変更されている場合は、3つのステージングスロットがすべて使用されます。競合がdelete-vs-modifyの場合、ステージングスロット1は使用されていますが、残りのスロットの1つは使用されていません。競合がcreate-vs-createの場合、スロット1とスロット2は空になり、スロット2と3が設定されます。
git rm
またはgit checkout
を実行すると、競合ステージングスロットがクリアされ、通常のステージ0エントリに解決結果が取り込まれます。 Gitは、矛盾したステージが残っていない場合にのみ、最後のマージコミットを許可します(git ls-files --stage
はステージ0以外は何も表示しません)。
GUIを嫌う多くの理由の1つは、インデックスの再チェックを拒否し、ベストが何であるかを知っていると考えているからです。あなたのようなものであれば、それを解決するすべてのCLIを無視し、すべての解決がGUI自体を通過する必要があります。
--oursフラグがあります。 http://gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html – pedrorijo91
を確認してください。そうですね、これを一括して行うようにしています... -file ....私はすべてのマージのために約200ファイルのためにそれを行う必要があるので。 –