Mil*_*ian 298
为了跟进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\"'
Run Code Online (Sandbox Code Playgroud)
或者,从Windows cmd.exe shell,第二行变为:
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
Run Code Online (Sandbox Code Playgroud)
变化(相对于Charles Bailey):
下载: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
Run Code Online (Sandbox Code Playgroud)
您应该在可用或有效列表中看到p4merge.如果没有,请更新你的git.
如果p4merge被列为可用,则它位于您的PATH中,您只需要设置merge.tool:
git config --global merge.tool p4merge
Run Code Online (Sandbox Code Playgroud)
如果它被列为有效,你必须定义mergetool.p4merge.path除了merge.tool:
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
Run Code Online (Sandbox Code Playgroud)
~
应该扩展到当前用户的主目录(所以理论上应该是路径~/AppData/Local/Perforce/p4merge.exe
),这对我来说不起作用$LOCALAPPDATA/Perforce/p4merge.exe
),git似乎没有扩展路径的环境变量(如果你知道如何使这个工作,请让我知道或更新这个答案)dai*_*huo 87
设置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
Run Code Online (Sandbox Code Playgroud)
然后它会工作.
Dɑv*_*vïd 58
我正在使用WinXP上的Portable Git(有效处理!),需要解决分支中出现的冲突.在我检查的所有gui中,KDiff3被证明是最透明的.
但是我在这篇博客文章中找到了我需要在Windows中使用它的说明,这些说明与此处列出的其他方法略有不同.它基本上等于将这些行添加到我的.gitconfig
文件中:
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/YourPathToBinaryHere/KDiff3/kdiff3.exe
keepBackup = false
trustExitCode = false
Run Code Online (Sandbox Code Playgroud)
现在工作得很好!
spl*_*cer 20
在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)"'
Run Code Online (Sandbox Code Playgroud)
另外,我想关闭difftool的提示信息:
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 16
git mergetool
是完全可配置的,所以你几乎可以选择自己喜欢的工具.
完整的文档在这里:http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
简而言之,您可以通过设置用户配置变量来设置默认的合并工具merge.tool
.
如果合并工具是本机支持的合并工具之一,则只需设置mergetool.<tool>.path
工具的完整路径(替换<tool>
为您配置的工具)merge.tool
.
否则,您可以设置mergetool.<tool>.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"'
Run Code Online (Sandbox Code Playgroud)
一旦你设置了你最喜欢的合并工具,git mergetool
只要你有冲突解决就可以运行.
Perforce的p4merge工具是一个非常好的独立合并工具.
在Windows 7上无可比拟
git config --global merge.tool bc3
git config --global mergetool.bc3.path "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe"
Run Code Online (Sandbox Code Playgroud)
似乎新的git版本直接支持p4merge,所以
git config --global merge.tool p4merge
Run Code Online (Sandbox Code Playgroud)
如果p4merge.exe在你的路径上,应该是你所需要的.无需设置cmd或路径.
我发现有两种方法可以在 github Windows 中将“ SourceGear DiffMerge ”配置为 difftool 和 mergetool。
命令提示符窗口中的以下命令将更新您的 .gitconfig 以配置 GIT 使用 DiffMerge:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"'
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"'
Run Code Online (Sandbox Code Playgroud)
[或者]
将以下行添加到您的 .gitconfig 中。该文件应位于您的主目录 C:\Users\UserName 中:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[merge]
tool = diffmerge
[mergetool "diffmerge"]
trustExitCode = true
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
226389 次 |
最近记录: |