我在Cygwin上尝试了msysGit和Git。两者本身都工作得很好,并且都能完美地运行gitk和git-gui。
现在我该如何配置合并工具呢?(Vimdiff在Cygwin上工作,但我更希望能有一个对我们一些喜欢windows的同事更友好的东西。)
我在Cygwin上尝试了msysGit和Git。两者本身都工作得很好,并且都能完美地运行gitk和git-gui。
现在我该如何配置合并工具呢?(Vimdiff在Cygwin上工作,但我更希望能有一个对我们一些喜欢windows的同事更友好的东西。)
当前回答
你可能也想添加这些选项:
git config --global merge.tool p4mergetool
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
git config --global mergetool.p4mergetool.trustExitCode false
git config --global mergetool.keepBackup false
另外,我也不知道为什么,但是米兰·加迪安的回答把我搞砸了。
其他回答
你可能也想添加这些选项:
git config --global merge.tool p4mergetool
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
git config --global mergetool.p4mergetool.trustExitCode false
git config --global mergetool.keepBackup false
另外,我也不知道为什么,但是米兰·加迪安的回答把我搞砸了。
在Cygwin的指导下,唯一对我有用的是:
git config --global merge.tool myp4merge
git config --global mergetool.myp4merge.cmd 'p4merge.exe "$(cygpath -wla $BASE)" "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)" "$(cygpath -wla $MERGED)"'
git config --global diff.tool myp4diff
git config --global difftool.myp4diff.cmd 'p4merge.exe "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)"'
另外,我喜欢关闭difftool的提示信息:
git config --global difftool.prompt false
Git mergetool是完全可配置的,所以你可以选择你最喜欢的工具。
完整的文档在这里:http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
简而言之,您可以通过设置用户配置变量merge.tool来设置默认的合并工具。
如果合并工具是本地支持的工具之一,你只需要设置mergetool.<tool>。工具完整路径的路径(将<tool>替换为您已配置的merge. conf。成为工具。
否则,可以设置mergetool.<tool>。在运行时将shell变量$BASE, $LOCAL, $REMOTE, $MERGED设置为适当的文件。无论你是直接编辑配置文件还是用git config命令设置变量,你都必须小心转义。
像这样的东西应该能让你知道你能做什么('mymerge'是一个虚构的工具)。
git config merge.tool mymerge
git config merge.mymerge.cmd 'mymerge.exe --base "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"'
一旦你安装了你最喜欢的合并工具,当你有冲突需要解决时,运行git mergetool就很简单了。
来自Perforce的p4merge工具是一个非常好的独立合并工具。
呸,这终于为我工作(Windows 7 + Cygwin + TortoiseMerge):
在. /配置:
cmd = TortoiseMerge.exe /base:$(cygpath -d \"$BASE\") /theirs:$(cygpath -d \"$REMOTE\") /mine:$(cygpath -d \"$LOCAL\") /merged:$(cygpath -d \"$MERGED\")
感谢之前的海报为提示使用cygpath!
对于kdiff3,您可以使用:
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global mergetool.kdiff3.trustExitCode false
git config --global diff.guitool kdiff3
git config --global difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global difftool.kdiff3.trustExitCode false