1

.NET.dllとが異なるブランチをマージしよう.pdbとしています。git/BC4 は、ローカルとリモートを選択するのではなく、ファイルに対してテキスト マージを実行しようとしています。

これまでに経験したことはありません。おそらく、設定を変更したか、BC4 と BC3 に違いがあります。

私の関連.gitconfig

[merge]
    tool = bec3
    renamelimit = 2000
[mergetool]
    prompt = false
    keepBackup = false
[mergetool "bec3"]
    cmd = \"C:/Program Files (x86)/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true

msysgit 1.9.5 と Beyond Compare 4.0.3 を使用しています

編集:バイナリマージはしたくありません.gitは、単にローカルまたはリモートファイルを選択して競合を解決するために使用されていました。私の質問は、「これは git 設定ですか (そうであれば、何ですか?)、それとも BC 設定ですか?」

4

2 に答える 2

1

Beyond Compare は、バイナリ ファイルのマージをサポートしていません。一部のバージョン管理システムでは、ファイル拡張子に基づいて異なるマージ ツールを定義し、バイナリ ファイルとテキスト ファイルに対して異なるマージ ツールを呼び出すことができます。Git がそれを行う方法を提供しているとは思いません。

Beyond Compare の外部でバイナリ ファイルをマージする必要があります。

.dll ファイルのリポジトリ バージョンとの競合を解決するには:

    git checkout --theirs -- file.dll
    git add file.dll
    git commit

.dll ファイルのバージョンとの競合を解決するには:

    git checkout --ours -- file.dll
    git add file.dll
    git commit

Beyond Compare の将来のバージョンの機能ウィッシュ リストに、バイナリ ファイルのマージを追加します。

于 2015-05-06T16:27:44.027 に答える
0

これは6年後にうまく機能します:Git 2.34(2021年第4四半期)では、xxdiff difftool(あなたの場合は「BeyondCompare」)バックエンドはステータス128で終了する可能difftool-helper性があります。 .
これでブロックしなくなりました。

ここで、'xxdiff' はdiff選択したツールです (ここでも、BeyondCompare です)。

David Aguilar ( )によるcommit 571f434 (2021 年 10 月 12 日)を参照してください。( 2021 年 10 月 25 日コミット 6a1bb08Junio C Hamanoによってマージされました)davvid
gitster

mergetools/xxdiff: セグメンテーション違反で difftool が停止するのを防ぎます

署名者: David Aguilar

ユーザーはしばしば " git difftool" ( man ) HEAD^" を使用して自分の作業をレビューし、" mergetool.prompt" に設定しfalseて、difftool各ファイルを比較する前にプロンプ​​トを出さないようにします。

xxdiffこれは、ユーザーがウィンドウを 1 つずつ確認することですべての差分を確認できるため、非常に便利です。

xxdiff一部のバイナリ ファイルに遭遇すると、問題が発生します。
セグメンテーション違反を起こし、終了コード 128 を返すことがあります。これはgit-difftool-helper、プロセスを中止する異常な状況として特殊なケースです。

xxdiff終了コード 128 が表示されたときに、そのdiff_cmd()実装で終了コードを抑制して、GIT_EXTERNAL_DIFFループが最初のバイナリ ファイルに遭遇したときに中断するのではなく、次のファイルまで中断せずに続行するようにします。

于 2021-12-05T01:25:21.727 に答える