Git比较与超越
我已经成功地让git启动Beyond Compare 3作为diff工具,但是当我做一个diff时,我正在比较的文件没有被加载。 只有最新版本的文件被加载,没有别的,所以在Beyond Compare的右窗格中没有任何东西。
我正在用Cygwin和Beyond Compare 3运行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
有没有其他人遇到这个问题,并知道这个解决scheme?
编辑:
我遵循了VonC的build议,但是我仍然遇到和以前完全相同的问题。 我有点新Git所以也许我没有正确使用diff。
例如,我试图用类似这样的命令在文件上看到diff:
git diff main.css
超越比较然后打开,只显示我的当前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
我的gitconfiguration看起来像这样:
[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,则检查合并目标文件时间戳,如果文件已更新,则认为合并已成功,否则将提示用户指示合并成功。
感谢Posh-Git的作者@dahlbyk发布他的configuration作为主旨 。 它帮助我解决了我的configuration问题。
[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比较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
官方文件为我工作
这是我的configuration文件。 它采取了一些摔跤,但现在它正在工作。 我正在使用的Windows服务器,msysgit和超越比较3(显然是一个x86版本)。 你会注意到我不需要指定任何参数,我使用“path”而不是“cmd”。
[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
超越比较支持页面有点简单。
检查我的diff.external答案更多(关于确切的语法)
提取:
$ git config --global diff.external <path_to_wrapper_script>
在命令提示符处,replace为“
git-diff-wrapper.sh
”的path,这样~/.gitconfig
包含
-->8-(snip)-- [diff] external = <path_to_wrapper_script> --8<-(snap)--
确保使用正确的语法来指定包装器脚本和diff工具的path,即使用正向斜杠而不是反斜杠。 就我而言,我有
[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
。
它看起来像BC3只支持PRO版本的3路合并。 http://www.scootersoftware.com/moreinfo.php?zz=kb_editions
请注意你做错了2美元的path。 因为你在Cygwin下但BC3不在,所以你应该为它指定一个完整的path。 如“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"
祝你好运。
http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/有一个解决scheme,我采用BeyondCompare工作:; http ://gist.github.com/564573
为Beyond Compare 3运行这些命令(如果系统中的BCompare.exepath不同,请根据您的系统进行更换):
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
不pipe什么原因,对我来说,由git diff创build的tmp文件在被打开之前被删除。 我必须先把它复制到另一个位置。
cp -r $2 "/cygdrive/c/temp$2" cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"
所不同的是在exe被称为:设置它来调用bcomp.exe,它会正常工作。 configuration你的环境来调用bcompare.exe,你会最终从你的修订版本系统的比较一侧是空的。
对于MAC做了很多研究后,它为我工作..! 1.安装超越比较,这将安装在下面的位置
/ Applications / Beyond \ Compare.app/Contents/MacOS/bcomp
请按照以下步骤在git中使用bc作为diff / merge工具http://www.scootersoftware.com/support.php?zz=kb_mac