2017-10-17 7 views
4

git fetchまたはget pullを実行すると競合が発生する可能性があります。競合するすべてのファイルのコピーを取得する方法はありますか?たとえば、foo.datというファイルが矛盾している場合は、foo.dat.oursfoo.dat.theirsというコピーが必要です。 SVNも同様の動作をしていると思います。git:競合するファイルのコピーを取得するには?

  1. は、foreachのは.ours後置(xargs cp
  2. 自分のコピーを取得してコピーを作成し、競合するファイル名
  3. git diff --name-only --diff-filter=Uにするには? Git SCM bookから

答えて

3

、私たちが見る「マニュアルファイルの再マージ」下:

Gitの店舗をインデックス内のこれらのバージョンのすべてのそれぞれは、それらに関連付けられている数字を持っている「ステージ」の下に。ステージ1は共通の祖先、ステージ2はあなたのバージョン、ステージ3はMERGE_HEADのマージンバージョン( "theirs")です。それから、

は、ここでのおおよそのbashスクリプトのアプローチです:

for file in $(git diff --name-only --diff-filter=U); do 
    git show ":1:${file}" > "${file}".common 
    git show ":2:${file}" > "${file}".ours 
    git show ":3:${file}" > "${file}".theirs 
done 
関連する問題