GitでBeyond Compare 3をdiffツールとして起動することに成功しましたが、diffを実行すると、比較対象のファイルがロードされません。ファイルの最新バージョンのみがロードされ、他には何もありません。そのため、Beyond Compareの右ペインには何もありません。
Beyond Compare 3でCygwinを使用してgit 1.6.3.1を実行しています。ウェブサイトのサポート部分で、次のようなスクリプトを使用して提案するように、compareを超えて設定しました。
#!/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が初めてなので、おそらくdiffを正しく使用していないでしょう。
たとえば、次のようなコマンドでファイルの差分を表示しようとしています:
git diff main.css
その後、Beyond Compareが開き、現在のmain.cssが左ペインに表示されるだけで、右ペインには何も表示されません。基本的に最後にコミットしたHEADと比較して、左側のペインに現在の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 configはDiffの場合は次のようになります。
[diff]
external = c:/cygwin/bin/git-diff-wrapper.sh
余分なラッパー.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に設定されていない場合、マージターゲットファイルのタイムスタンプがチェックされ、ファイルが更新された場合はマージが成功したと見なされます。そうでない場合、ユーザーはマージの成功を示すように求められます。
@ dahlbyk 、 Posh-Git の作者である config as a 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
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
を使用します
公式ドキュメント 私のために働いた
これが私の設定ファイルです。それはいくつかのレスリングがかかりましたが、今では機能しています。私はWindowsサーバー、msysgit、さらにbeyond compare 3(明らかにx86バージョン)を使用しています。引数を指定する必要はなく、「cmd」ではなく「path」を使用していることに気付くでしょう。
[user]
name = PeteW
email = [email protected]
[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
bC3はPRO Editionの3方向マージのみをサポートしているようです。 http://www.scootersoftware.com/moreinfo.php?zz=kb_editions
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
。
間違ったパス$ 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"
幸運を。
BC4 64ビットの更新:これは、Git for Windows v.2.16.2およびBeyond Compare 4-v.4.2.4(64ビット版)で機能します
ユーザールート「C:\ Users\MyUserName」にある.gitconfigファイルを手動で編集し、diff/difftoolおよびmerge/mergetoolタグを
[diff]
tool = bc
[difftool "bc"]
path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[difftool "bc"]
cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[difftool]
Prompt = false
[merge]
tool = bc
[mergetool "bc"]
path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[mergetool "bc"]
cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"
Windows 7(プロフェッショナル)とGit for Windows(v 2.15以降)を実行している場合、以下のコマンドを実行するだけで、Git for Windowsでサポートされているさまざまなdiffツールを確認できます。
git difftool --tool-help
次のような出力が表示されます
git difftool --tool = 'は次のいずれかに設定できます。
vimdiff vimdiff2 vimdiff3
これは、現在gitがdifftoolとしての比較を超えてサポートしていない(見つけることができない)ことを意味しています。
Gitが比較を超えて有効なdifftoolを見つけるには、システムにBeyond Compareインストールディレクトリが必要ですpath環境変数。これを確認するには、Shell(cmd、git bashまたはpowershellからbcompareを実行します。GitBashを使用しています)。 Beyond Compareが起動しない場合は、そのインストールディレクトリ(私の場合はC:\ Program Files\Beyond Compare 4)をシステムパス変数に追加します。この後、シェルを再起動します。 Gitは、比較ツールオプションとしてBeyond Compareを表示します。以下のコマンドのいずれかを使用して、difftoolとしての比較を超えて起動できます(たとえば、ローカルファイルを他のブランチと比較するため)
git difftool -t bc branchnametocomparewith -- path-to-file
or
git difftool --tool=bc branchnametocomparewith -- path-to-file
以下のコマンドを使用して、デフォルトのdifftoolとして比較を超えて設定できます
git config --global diff.tool bc
追伸上記のコマンドのbcは、Gitがパスシステム変数から見つけたものに基づいてbc3またはbcになり得ることに注意してください。
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
を使用します
違いは、exeが呼び出されることです。bcomp.exeを呼び出すように設定すると、正常に動作します。 bcompare.exeを呼び出すように環境を構成すると、リビジョンシステムから取得した比較の側面が空になります。
http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/ には、BeyondCompareで働くために採用した解決策があります: http:// Gist.github.com/56457
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としての比較を超えて設定 を参照できます。
多くの研究を行った後のMACにとって、それは私のために働いた..! 1. beyond compareをインストールすると、これは以下の場所にインストールされます
/ Applications/Beyond\Compare.app/Contents/MacOS/bcomp
以下の手順に従って、bcをgitのdiff/mergeツールとして作成してください http://www.scootersoftware.com/support.php?zz=kb_mac
BC2.exeを使用したgitバージョン2.15.1.windows.2の場合。
以下の設定は私のマシンで最終的に動作します。
[difftool "bc2"] cmd = \"c:/program files/beyond compare 2/bc2.exe\" ${LOCAL} ${REMOTE}
なんらかの理由で、私にとって、git diffで作成されたtmpファイルは、beyond compareで開く前に削除されていました。最初に別の場所にコピーする必要がありました。
cp -r $2 "/cygdrive/c/temp$2"
cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"