当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?
如何配置Git使用不同的工具与.gitconfig文件进行区分?
我在.gitconfig中有这个:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Run Code Online (Sandbox Code Playgroud)
这是行不通的; 它只是打开常规命令行diff.当我做
export GIT_EXTERNAL_DIFF=git-chdiff
Run Code Online (Sandbox Code Playgroud)
然后git diff将打开外部差异工具(所以我知道外部差异工具脚本工作正常).我的.gitconfig配置对于diff工具有什么问题吗?
我正在使用Git Extensions,它预先安装并设置KDiff作为解决合并冲突的diff工具.我非常喜欢Winmerge,并希望用Winmerge取代KDiff.
在Git Extensions设置中,有一些设置可以更改Mergetool,但我似乎无法弄清楚我应该使用什么语法以及为什么.似乎有4个变量:$ BASE,$ LOCAL,$ REMOTE,$ MERGED.看来我应该将这些传递给WinMergeU.exe,但是哪个命令行参数?
我曾尝试过几次搜索,但实际上似乎没有答案.
我正在尝试将WinMerge与Git集成,因为我之前在Windows 7旗舰版上看到过其他人.
我已经按照以下步骤操作,但是当我执行git mergetool时默认继续显示错误,默认为vimdiff.
在git的根目录中创建了一个名为winmerge.sh的文件:C/Program Files(x86)/ Git/with:WinMergeU是正确的位置.
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe"
git /e /u /dl "Base" /dr "Mine" "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
并使用以下命令.
git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)
错误显示为:
git config option merge.tool set to unknown tool: winmerge
Run Code Online (Sandbox Code Playgroud) 在git中是否有一个功能,我可以在提交更改之前将我的本地文件与git源代码控件进行比较?
我在Windows机器上使用msys Git进行源代码控制,我正在试图弄清楚如何让我的合并工具WinMerge与Git一起工作.
我已经按照我的能力尽可能地遵循了这个博客上的说明,因为它是我发现的最接近我正在尝试做的事情.基本上我做的是:
修改我的.gitconfig文件以包含以下内容:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED"
trustExitCode = false
keepBackup = false
这几乎正常.当我尝试从Git运行合并工具时,WinMerge给我一个错误,说它无法找到文件的路径,这是完全合理的,因为它正在寻找的路径是:
C:\MY\WORKING\DIRECTORY\-e C:\MY\WORKING\DIRECTORY\-ub
看起来Git正在将选项传递给合并工具,而不是本地和远程文件名,如果一切正常,我希望传递这些文件名.
我在网上搜索了Git的合并文档,但我似乎找不到任何与我想要做的事情有关的事情.我的猜测是解决方案将是以下之一:
$LOCAL&$REMOTE变量更改为正确的值,假设$LOCAL&$REMOTE不正确. .bat脚本来调用WinMergeU,并处理Git在我的.bat脚本逻辑中发送给合并工具的参数.我最喜欢的svn工作流程之一是使用Beyond Compare的文件夹比较功能来查看两个分支或分支和主干之间的净差异.有没有办法在git中执行此操作而无需手动创建同一存储库的多个克隆?
当我问这个问题时,我发现我可以写一个脚本,将当前的repo克隆到一个临时目录,检出所需的分支,然后用两个目录作为参数调用BCompare.exe.使用调用文件夹比较视图
BCompare.exe path/to/folder1 path/to/folder2
Run Code Online (Sandbox Code Playgroud)
这听起来合理吗?在完成Beyond Compare之后,我能否删除额外的克隆?
我已经阅读了关于这个主题的大量问答,并遵循了该信的所有指示.但是我仍然头疼,试图将Git设置为使用WinMerge进行差异和合并.
我使用Git终端采取了以下步骤:
git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)
我还在我的PATH变量中包含的目录中设置了一个脚本:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2""
Run Code Online (Sandbox Code Playgroud)
当我执行
git mergetool
Run Code Online (Sandbox Code Playgroud)
在Git终端中,我看到:
Merging:
first.txt
Normal merge conflict for 'first.txt':
{local}: modified
{remote}: modified
Launching WinMergeU.exe:
Run Code Online (Sandbox Code Playgroud)
因此在我看来,$LOCAL和$REMOTE变量并没有将任何内容传递给winmerge.sh脚本.我在这做错了什么?我必须在配置部分中假设它.
我喜欢在cygwin上使用git,但我唯一的缺点是当我想要时git difftool我不能使用任何有用的东西.git diff对我来说大部分时间都没问题,但有时候我想用winmerge来查看这些差异git difftool是否有某种方法来设置它?
git ×10
winmerge ×4
diff ×2
difftool ×2
mergetool ×2
batch-file ×1
cygwin ×1
diffmerge ×1
git-difftool ×1
github ×1
merge ×1
msysgit ×1
settings ×1
windows ×1
windows-xp ×1