在.gitconfig中配置diff工具
问题出现的原因:在使用git diff命令时,没有配置合适的diff工具。
解决方法:通过修改.gitconfig文件或使用终端命令来配置diff工具。
文章内容如下:
有人已经给出了一个99%的答案,但是还有一步被遗漏了。(我的答案将来自于OS X,所以你需要根据实际情况更改文件路径。)
你可以在~/.gitconfig
文件中进行如下修改:
[diff] tool = diffmerge [difftool "diffmerge"] cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE
这样就可以修复diff工具的问题了。你也可以通过终端命令来直接修复,而不需要直接编辑~/.gitconfig
文件:
git config --global diff.tool diffmerge git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE"
其他人遗漏的1%是,当使用这个工具时,不能只运行git diff myfile.txt
命令;你需要运行git difftool myfile.txt
命令。
对于这最后1%的补充点,我点赞。没有什么比一个完全钉好的钉子更让人满意了 😉
有没有办法将其设置为默认工具呢?
很好,你漏掉了一步git config --global --add difftool.prompt false
。;)
问题:如何在.gitconfig中配置diff工具?
原因:Git提供了一系列预配置的difftools(kdiff3、kompare、tkdiff、meld、xxdiff、emerge、vimdiff、gvimdiff、ecmerge、diffuse、opendiff、p4merge和araxis),同时也允许用户指定自己的difftool。如果要使用预配置的difftool(例如"vimdiff"),只需将以下内容添加到~/.gitconfig
文件中:
[diff]
tool = vimdiff
这样,就可以运行"git difftool"并使用所选择的工具。
解决方法:如果想要指定自己的difftool,则需要进行一些额外的配置工作。具体操作可以参考:How do I view 'git diff' output with my preferred diff tool/ viewer?
对于预配置的"out-of-the-box" difftool是什么意思呢?为了设置一个不在列表中的外部diff工具(如"winMerge"),我必须按照你在帖子中提到的设置进行操作,然后一切都开始正常工作,不需要任何额外的配置。那么这是否意味着git也支持"winMerge"这个预配置的工具呢?根据我对你帖子的理解,设置一个不被git预配置的difftool需要一些额外的工作/设置/配置。
文章整理完毕,内容如上所示。
问题的原因是用户在执行git config --global diff.tool diffmerge
命令后,使用git diff myfile.txt
时仍然得到了默认的Unix diff。可能是因为用户在本地配置中定义了其他的diff工具。
解决方法是通过执行git difftool myfile.txt
命令来使用指定的工具进行diff操作。用户可以参考链接nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy,了解如何为diffmerge传递正确的参数。