虽然这个问题和答案中的大部分信息都可以在StackOverflow上找到,但它分散在很多页面上,并且在其他错误或误导的答案中。我花了一段时间才把我想知道的一切拼凑起来。
有很多不同的程序可以用作git的difftool和mergetool,当然,对于哪个是最好的并没有共识(意见、需求和操作系统显然会有所不同)。
Meld是一个流行的免费,开源,跨平台(UNIX/Linux, OSX, Windows)的选择,如StackOverflow的问题所示,什么是最好的可视化合并工具Git?,其中提议Meld的答案获得的票数是其他选项的3倍多。
下面我将回答以下2个问题:
我如何设置和使用Meld作为我的git difftool?
我如何设置和使用Meld作为我的git合并工具?
注意:没有必要使用相同的程序作为你的difftool和mergetool,可以为两者设置不同的程序。
对于Windows。在Git Bash中运行这些命令:
git config --global diff.tool meld
git config --global difftool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global difftool.prompt false
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global mergetool.prompt false
(如果你的Meld.exe文件路径不同,请更新。)
对于Linux。在Git Bash中运行这些命令:
git config --global diff.tool meld
git config --global difftool.meld.path "/usr/bin/meld"
git config --global difftool.prompt false
git config --global merge.tool meld
git config --global mergetool.meld.path "/usr/bin/meld"
git config --global mergetool.prompt false
你可以使用下面的命令来验证Meld的路径:
which meld
我使用meld遵循这个简单的设置。Meld是免费的开源差异工具。对于任何代码更改,您将看到文件和目录的比较。
使用yum/apt在Linux中安装meld。
在~/中添加以下行。gitconfig文件
(diff)
工具= meld
转到代码repo并输入以下命令查看上次提交的更改与当前工作目录之间的差异(未分阶段未提交的更改)
我的小道消息
要查看上次提交的代码和阶段性代码之间的差异,请使用以下命令
Git difftool——cached——dir-diff ./
这是一个主要针对使用Windows的开发人员的答案
diff工具的路径语法不同于其他平台。
我使用Kdiff3作为git的合并工具,但设置git的difftool为Meld,我
首先从Meldmerge.org安装最新版本的Meld
然后添加以下到我的全局.gitconfig使用:
git config --global -e
注意,如果你想要Sublime Text 3而不是默认的Vim作为核心编辑器,你可以
添加到.gitconfig文件中:
[core]
editor = 'c:/Program Files/Sublime Text 3/sublime_text.exe'
然后添加inn Meld作为difftool
[diff]
tool = meld
guitool = meld
[difftool "meld"]
cmd = \"C:/Program Files (x86)/Meld/Meld.exe\" \"$LOCAL\" \"$REMOTE\" --label \"DIFF
(ORIGINAL MY)\"
prompt = false
path = C:\\Program Files (x86)\\Meld\\Meld.exe
注意上面cmd中的斜杠,在Windows上这是必要的。
也可以用——dir-diff设置一个别名来显示当前git的差异
选择。这将列出在Meld中更改的文件,当您更改了多个文件时(确实是一个非常常见的场景),这很方便。
别名在.gitconfig文件中,在[alias]部分下面:
showchanges = difftool --dir-diff
为了显示我对代码所做的更改,我只需输入以下命令:
git showchanges
下图显示了——dir-diff选项如何显示已更改文件的列表(示例):
然后,可以单击每个文件并显示Meld内部的更改。