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

感情迁移 提交于 2020-03-05 21:21:22

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

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


#1楼

我不得不在Windows 7上使用msysGit删除额外的引用,不知道为什么。

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

#2楼

我从他们的手册( http://manual.winmerge.org/CommandLine.html )使用名为WinMerge( http://winmerge.org/ )的应用程序

这是我通过.gitconfigmergetool指令使用的bash脚本

#!/bin/sh
# using winmerge with git
# replaces unix style null files with a newly created empty windows temp file

file1=$1
if [ "$file1" == '/dev/null' ] || [ "$file1" == '\\.\nul' ] || [ ! -e "$file1" ]
    then 
       file1="/tmp/gitnull"
       `echo "">$file1`
fi
file2=$2
if [ "$file2" == '/dev/null' ] || [ "$file2" == '\\.\nul' ] || [ ! -e "$file2" ]
    then 
       file2="/tmp/gitnull"
       `echo "">$file2`
fi
echo diff : $1 -- $2
"C:\Program files (x86)\WinMerge\WinMergeU.exe" -e -ub -dl "Base" -dr "Mine" "$file1" "$file2"

基本上bash会考虑在空文件中diff的结果,并在正确的位置创建一个新的临时文件。


#3楼

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

git config --global merge.tool p4merge

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


#4楼

在Windows 7上无可比拟

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

#5楼

您可能还想添加这些选项:

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

另外,我不知道为什么,但米尔加迪安的回答中的引用和斜线对我来说搞砸了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!