119

git で Beyond Compare 3 を差分ツールとして起動することに成功しましたが、差分を実行すると、比較対象のファイルが読み込まれません。ファイルの最新バージョンのみがロードされ、それ以外は何もロードされないため、Beyond Compare の右側のペインには何も表示されません。

Beyond Compare 3 を使用して Cygwin で git 1.6.3.1 を実行しています。

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"path_to_bc3_executable" "$2" "$5" | cat

他の誰かがこの問題に遭遇し、これに対する解決策を知っていますか?

編集:
VonC の提案に従いましたが、以前とまったく同じ問題が発生しています。私はGitを初めて使用するので、おそらく差分を正しく使用していません。

たとえば、次のようなコマンドを使用してファイルの差分を表示しようとしています:
git diff main.css

Beyond Compare が開き、現在の main.css のみが左側のペインに表示され、右側のペインには何も表示されません。基本的に最後にコミットしたものと比較して、左側のペインに現在の main.css を表示したいと思います。

私の git-diff-wrapper.sh は次のようになります。

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

私の git 設定は、Diff では次のようになります。

[diff]  
external = c:/cygwin/bin/git-diff-wrapper.sh
4

20 に答える 20

149

追加のラッパー .sh ファイルは使用しません。私の環境は Windows XP、cygwin 上の git 1.7.1、Beyond Compare 3 です。以下は私の.git/configファイルです。

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    #use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
[merge]
    tool = bc3
[mergetool]
    prompt = false
[mergetool "bc3"]
    #trustExitCode = true
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

次に、$ git difftoolを使用して比較し、$ git mergetoolを使用してマージします。

trustExitCodeについて: カスタム マージ コマンドの場合、マージ コマンドの終了コードを使用してマージが成功したかどうかを判断できるかどうかを指定します。これが true に設定されていない場合、マージ ターゲット ファイルのタイムスタンプがチェックされ、ファイルが更新されている場合はマージが成功したと見なされます。それ以外の場合は、マージの成功を示すように求められます。

于 2010-08-03T10:10:23.130 に答える
28

Posh-Gitの作成者である@dahlbykに、構成を gistとして投稿していただきありがとうございます。構成の問題を解決するのに役立ちました。

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc3
[mergetool]
    prompt = false
    keepBackup = false
[mergetool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true
[alias]
    dt = difftool
    mt = mergetool
于 2012-03-01T22:52:13.873 に答える
21

Beyond Compare 2 に対して次のコマンドを実行します。

git config --global diff.tool bc2
git config --global difftool.bc2.cmd "\"c:/program files (x86)/beyond compare 2/bc2.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

Beyond Compare 3 に対して次のコマンドを実行します。

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

次に使用しますgit difftool

于 2011-06-07T13:56:21.080 に答える
12

公式ドキュメントは私のために働いた

于 2012-05-16T09:45:07.710 に答える
6

これが私の設定ファイルです。少し苦労しましたが、今はうまくいっています。私はWindowsサーバー、msysgit、およびそれ以降の比較3(明らかにx86バージョン)を使用しています。引数を指定する必要がなく、「cmd」の代わりに「path」を使用していることに気付くでしょう。

[user]
        name = PeteW
        email = petew@petew.com
[diff]
        tool = bc3
[difftool]
        prompt = false
[difftool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
[merge]
        tool = bc3
[mergetool]
        prompt = false
        keepBackup = false
[mergetool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
        trustExitCode = true
[alias]
        dt = difftool
        mt = mergetool
于 2012-10-10T13:39:59.143 に答える
5

Beyond Compare サポート ページは少し簡潔です。

詳細については、私のdiff.external answerを確認してください (正確な構文に関して)

エキス:

$ git config --global diff.external <path_to_wrapper_script>

git-diff-wrapper.shコマンド プロンプトで、" "へのパスに置き換え~/.gitconfigます。

-->8-(snip)--
[diff]
    external = <path_to_wrapper_script>
--8<-(snap)--

正しい構文を使用して、ラッパー スクリプトと diff ツールへのパスを指定してください。つまり、バックスラッシュの代わりにスラッシュを使用してください。私の場合、私は持っています

[diff]
    external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh

.gitconfigと_

"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

ラッパースクリプトで。


注: も使用できますgit difftool

于 2010-01-15T06:51:59.393 に答える
3

$2 のパスを間違えていることに注意してください。あなたは Cygwin を使用しているが BC3 を使用していないため、完全なパスを指定する必要があります。「d:/cygwin$2」など

ここで私の git-diff-wrapper.sh を参照してください:

$ cat ~/git-diff-wrapper.sh
#!/bin/sh
echo $2
echo $5
/cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin$2" "$5"

幸運を。

于 2010-04-06T04:49:03.603 に答える
1

http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/には、BeyondCompare で作業するために採用したソリューションがあります: http://gist.github.com/564573

于 2010-09-03T21:45:24.427 に答える
1

Beyond Compare 3 に対して次のコマンドを実行します (システムで BCompare.exe パスが異なる場合は、それに合わせて置き換えてください)。

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

次に使用しますgit difftool

于 2015-04-07T13:15:40.130 に答える
1

Windows 10、Git v2.13.2

私の.gitconfig。「\」と「"」のエスケープ文字を忘れずに追加してください。

[diff]
    tool = bc4
[difftool]
    prompt = false
[difftool "bc4"]
    cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc4
[mergetool "bc4"]
    path = C:\\Program Files\\Beyond Compare 4\\BCompare.exe

git コマンドを使用して構成するための difftool として比較を超えたセットアップを参照することができます。

于 2018-12-20T06:54:56.563 に答える
0

どういうわけか、私にとって、git diffによって作成されたtmpファイルは、比較対象外で開く前に削除されていました。最初に別の場所にコピーする必要がありました。

cp -r $2 "/cygdrive/c/temp$2"
cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"
于 2010-05-28T12:15:35.623 に答える
0

多くの調査を行った後、MACの場合、それは私にとってはうまくいきました..! 1. Beyond Compare をインストールします。これは以下の場所にインストールされます。

/Applications/Beyond\ Compare.app/Contents/MacOS/bcomp

次の手順に従って、bc を git http://www.scootersoftware.com/support.php?zz=kb_macの diff/merge ツールとして作成してください。

于 2015-11-28T03:56:49.117 に答える