Ava*_*nst 106 git beyondcompare
我成功地让git启动Beyond Compare 3作为diff工具,但是当我做差异时,我正在比较的文件没有被加载.只加载了最新版本的文件而没有其他内容,因此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
Run Code Online (Sandbox Code Playgroud)
有没有其他人遇到过这个问题并知道解决方案?
编辑:
我已经按照VonC的建议,但我仍然遇到与以前完全相同的问题.我是Git的新手,所以也许我没有正确使用差异.
例如,我试图用这样的命令在文件上看到diff:
git diff main.css
然后将打开Beyond Compare,只显示左窗格中的当前main.css,右窗格中没有任何内容.我希望在左窗格中看到我当前的main.css与HEAD相比,基本上我最后提交的内容.
我的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
Run Code Online (Sandbox Code Playgroud)
我的git配置对于Diff看起来像这样:
[diff]
external = c:/cygwin/bin/git-diff-wrapper.sh
Run Code Online (Sandbox Code Playgroud)
yeh*_*nan 137
我不使用额外的包装.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"
Run Code Online (Sandbox Code Playgroud)
然后,我使用$ git difftool进行比较,并使用$ git mergetool进行合并.
关于trustExitCode:对于自定义合并命令,请指定合并命令的退出代码是否可用于确定合并是否成功.如果未设置为true,则检查合并目标文件时间戳,如果文件已更新,则假定合并已成功,否则将提示用户指示合并成功.
Nic*_*ski 27
感谢Posh-Git的作者@dahlbyk发布他的配置作为要点.它帮助我解决了配置问题.
[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
Run Code Online (Sandbox Code Playgroud)
use*_*ser 20
为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
Run Code Online (Sandbox Code Playgroud)
为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
Run Code Online (Sandbox Code Playgroud)
然后用 git difftool
小智 11
使用比 OP 更高版本的 Git 和 Beyond Compare,以下是对我有用的:
要编辑的配置文件:%USERPROFILE%\.gitconfig
将 diff/difftool 和 merge/mergetool 标签替换为
[diff]
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = \"c:/program files/beyond compare 4/bcomp.exe\" "$LOCAL" "$REMOTE"
[merge]
tool = bc4
[mergetool]
prompt = false
[mergetool "bc4"]
trustExitCode = true
cmd = \"c:/program files/beyond compare 4/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
Run Code Online (Sandbox Code Playgroud)
要在MAC OSX中使用 Beyond Compare,您需要执行以下操作: 从菜单安装 Beyond Compare 命令行工具:
然后你需要运行这些命令:
git config --global diff.tool bc3
git config --global merge.tool bc3
git config --global mergetool.bc3.trustExitCode true
Run Code Online (Sandbox Code Playgroud)
之后,您可以git mergetool在有 git 冲突的文件夹中运行,BC 将按预期工作
这是我的配置文件.这需要一些摔跤,但现在它正在发挥作用.我正在使用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
Run Code Online (Sandbox Code Playgroud)
在除了比较支持页面是有点短。
检查我的diff.external 答案以获取更多信息(关于确切的语法)
提炼:
$ git config --global diff.external <path_to_wrapper_script>
Run Code Online (Sandbox Code Playgroud)
在命令提示符下,替换为“
git-diff-wrapper.sh”的路径,因此您的~/.gitconfig包含
-->8-(snip)--
[diff]
external = <path_to_wrapper_script>
--8<-(snap)--
Run Code Online (Sandbox Code Playgroud)
确保使用正确的语法来指定包装脚本和差异工具的路径,即使用正斜杠而不是反斜杠。就我而言,我有
[diff]
external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh
Run Code Online (Sandbox Code Playgroud)
在
.gitconfig和
"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
Run Code Online (Sandbox Code Playgroud)
在包装脚本中。
注意:您也可以使用git difftool.
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\"
Run Code Online (Sandbox Code Playgroud)
如果您运行的是 Windows 7(专业版)和 Git for Windows(v 2.15 或更高版本),您只需运行以下命令即可了解 Git for Windows 支持哪些不同的差异工具
git difftool --tool-help
Run Code Online (Sandbox Code Playgroud)
您将看到与此类似的输出
git difftool --tool=' 可以设置为以下之一:
vimdiff vimdiff2 vimdiff3
这意味着你的 git 目前不支持(找不到)无法与 difftool 进行比较。
为了让 Git 找到 Beyond Compare 作为有效的 difftool,您的系统路径环境变量中应该有Beyond Compare 安装目录。您可以通过从 shell(cmd、git bash 或 powershell。我使用 Git Bash)运行 bcompare 来检查这一点。如果 Beyond Compare 未启动,请将其安装目录(在我的例子中为 C:\Program Files\Beyond Compare 4)添加到系统路径变量中。之后,重新启动 shell。Git 将显示 Beyond Compare 作为可能的 difftool 选项。您可以使用以下任何命令来启动 difftool 之外的比较(例如,将任何本地文件与其他分支进行比较)
git difftool -t bc branchnametocomparewith -- path-to-file
or
git difftool --tool=bc branchnametocomparewith -- path-to-file
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令将 Beyond Compare 配置为默认 difftool
git config --global diff.tool bc
Run Code Online (Sandbox Code Playgroud)
ps 请记住,上面命令中的 bc 可以是 bc3 或 bc,具体取决于 Git 从路径系统变量中找到的内容。