1

SmartSynchronizeをマージ ツールとして使用するように git を構成しましたが、実行するgit mergetoolと、次のような競合マーカーが表示されます。

ここに画像の説明を入力 (大きいバージョン)

私はP4Mergeを使用していて、それがこれらの競合マーカーを処理することを確認しましたが、 SmartSynchronizeのようにマージされたファイルを画面の中央に表示するのが本当に好きです。それで、私は何か間違ったことをしていますか、それともこのツールは競合マーカーを処理できないのですか?

私の.gitconfig

[mergetool "smartsynchronize"]
cmd = '/C/Program Files (x86)/SmartSynchronize 3.3/bin/smartsynchronize.exe' "$LOCAL" "$REMOTE" "$MERGED"   

(また、P4Mergeでそのようにマージされたファイルを途中で表示する方法を知っている場合は、ぜひ知りたいです)

4

3 に答える 3

1

git-mergetool3 方向マージ ツールを呼び出します。つまり、2 つのブランチと共通の祖先からマージ結果を生成するツールです。全部で 4 つのファイル (3 つの入力ファイルと 1 つの出力ファイル) があります。

ただし、2 つのブランチとマージ結果mergetoolの 3 つの入力のみでを呼び出しています。したがって、マージ結果を共通の祖先(マージ ファイルを書き込んだファイル (競合マーカー付き)) として使用しています。代わりに、2 つの側 ( , ) と共通の祖先を使用してマージ ツールを呼び出し、マージ結果を に配置するように指示する必要があります。git-merge$LOCAL$REMOTE$BASE$MERGED

3 方向マージ ツールは、共通の祖先と出力ファイルを実際に区別できる必要があります。ツールの作成者に相談して、これが正しいかどうかを判断し、できない場合はツールに欠陥があることを提案する必要があります。

ただし、不十分なマージ ツールが本当に気に入っている場合は、次のようなスクリプトを作成できます。

  • $BASE一時ファイルにコピーします
  • および一時ファイルを使用して$LOCAL、3 方向マージ ツールを呼び出します。$REMOTE
  • 終了コードの成功をチェックし、マージが成功すると、一時ファイルを次の場所にコピーします。$MERGED
  • マージ ツールから終了コードを返します
于 2014-02-12T02:55:40.367 に答える