当前位置:  开发笔记 > 编程语言 > 正文

Windows上的Git:你如何设置合并工具?

如何解决《Windows上的Git:你如何设置合并工具?》经验,为你挑选了8个好方法。

我在Cygwin上尝试过msysGit和Git.两者都可以很好地完成它们并且完美地运行gitk和git-gui.

现在我如何配置合并工具?(Vimdiff在Cygwin上工作,但最好是我想为一些喜欢Windows的同事提供一些用户友好的东西.)



1> Milan Gardia..:

为了跟进Charles Bailey的回答,这是我使用p4merge(免费的跨平台3way合并工具)的git设置; 在msys Git(Windows)安装上测试:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'

或者,从Windows cmd.exe shell,第二行变为:

git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""

变化(相对于Charles Bailey):

添加到全局git配置,即对所有git项目有效,而不仅仅是当前的git项目

自定义工具配置值驻留在"mergetool.[工具] .cmd"中,而不是"合并.[工具] .cmd"(傻我,花了一个小时来解决为什么git一直在抱怨不存在的工具)

为所有文件名添加双引号,以便合并工具仍然可以找到带空格的文件(我在Powershell的msys Git中测试了这个)

请注意,默认情况下Perforce会将其安装目录添加到PATH,因此无需在命令中指定p4merge的完整路径

下载:http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools


编辑(2014年2月)

正如@Gregory Pakosz所指出的,最新的msys git现在"本机地"支持p4merge(在1.8.5.2.msysgit.0测试).

您可以通过运行显示支持的工具列表:

git mergetool --tool-help

您应该在可用有效列表中看到p4merge.如果没有,请更新你的git.

如果p4merge被列为可用,则它位于您的PATH中,您只需要设置merge.tool:

git config --global merge.tool p4merge

如果它被列为有效,你必须定义mergetool.p4merge.path除了merge.tool:

git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe

以上是为当前用户安装p4merge时的示例路径,而不是系统范围(不需要管理员权限或UAC提升)

虽然~应该扩展到当前用户的主目录(所以理论上应该是路径~/AppData/Local/Perforce/p4merge.exe),这对我来说不起作用

更好的方法是利用环境变量(例如$LOCALAPPDATA/Perforce/p4merge.exe),git似乎没有扩展路径的环境变量(如果你知道如何使这个工作,请让我知道或更新这个答案)


这对我来说:在Windows 7机器上``git config --global mergetool.p4merge.cmd'"C:\\ Program Files \\ Perforce \\ p4merge"$ BASE $ LOCAL $ REMOTE $ MERGED'`
设置`mergetool.p4merge.cmd`将不再起作用,因为Git已经开始尝试支持p4merge,请参阅`libexec/git-core/git-mergetool - lib`.相反,它直接使用`mergetool.p4merge.path`
不得不把完整的路径和转义双引号:`cmd = \""c:/ Program Files/TortoiseSVN/bin/TortoiseMerge.exe"\" - base:"$ BASE" - 他们:"$ REMOTE"-mine: "$ LOCAL"-merged:"$ MERGED"`

2> daizuozhuo..:

设置mergetool.p4merge.cmd将不再起作用,因为Git已经开始尝试支持p4merge,请参阅libexec/git-core/git-mergetool--lib.so我们只需要为git指定mergetool路径,例如p4merge:

git config --global mergetool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global merge.tool p4merge

然后它会工作.


我意识到这是一个旧线程,但我无法让这条路走下去.鉴于cmd/msys的相互作用,我对如何逃避路径感到有点困惑...*编辑*切换到双引号固定它!

3> Dɑvïd..:

我正在使用WinXP上的Portable Git(有效处理!),需要解决分支中出现的冲突.在我检查的所有gui中,KDiff3被证明是最透明的.

但是我在这篇博客文章中找到了我需要在Windows中使用它的说明,这些说明与此处列出的其他方法略有不同.它基本上等于将这些行添加到我的.gitconfig文件中:

[merge]
    tool = kdiff3

[mergetool "kdiff3"]
    path = C:/YourPathToBinaryHere/KDiff3/kdiff3.exe
    keepBackup = false
    trustExitCode = false

现在工作得很好!


在我的Win7 PC上,我不得不使用`path = C:\\ Program Files(x86)\\ KDiff3 \\ kdiff3.exe`(注意双反斜杠)

4> splicer..:

在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



5> CB Bailey..:

git mergetool 是完全可配置的,所以你几乎可以选择自己喜欢的工具.

完整的文档在这里:http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

简而言之,您可以通过设置用户配置变量来设置默认的合并工具merge.tool.

如果合并工具是本机支持的合并工具之一,则只需设置mergetool..path工具的完整路径(替换为您配置的工具)merge.tool.

否则,您可以设置mergetool..cmd一些shell在运行时进行评估,并将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工具是一个非常好的独立合并工具.



6> developer747..:

在Windows 7上无可比拟

git config --global merge.tool bc3
git config --global mergetool.bc3.path "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe"


我使用了这些命令,但我使用的是WinMerge而不是Beyond Compare.

7> friederbluem..:

似乎新的git版本直接支持p4merge,所以

git config --global merge.tool p4merge

如果p4merge.exe在你的路径上,应该是你所需要的.无需设置cmd或路径.



8> hlovdal..:

正如这里已经回答的那样(以及这里和这里),mergetool是配置它的命令.对于一个漂亮的图形前端,我推荐kdiff3(GPL).

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有