功能强大的git提供了diff功能,来比较不同的branch、commit等等。但是默认的git

diff是在Terminal里面显示的,查看起来比较费劲。git自己也深知这一点,所以提供对第三方diff工具的支持。

这里就抛砖引玉,讲一下如何利用git difftool和diffmerge来多代码比较。

首先diffmerge是一款跨平台的免费软件,支持Windows, Mac OS,

Ubuntu以及Fedora。>>点此下载diffmerge<<

注意,因为git需要在Terminal下调用diffmerge,所以下载的时候要下载Installer版的。这样在安装的时候就自动将diffmerge写入环境变量,就可以在命令行下调用diffmerge了。否则在后面使用的时候会出现如下错误:

/usr/libexec/git-core/git-mergetool--lib: line 327: diffmerge:

command not found

下载并安装好diffmerge之后,就需要来配置git了。在Terminal下执行:

git config --global diff.tool diffmerge

git config --global difftool.diffmerge.cmd 'diffmerge "$LOCAL"

"$REMOTE"'

git config --global merge.tool diffmerge

git config --global mergetool.diffmerge.cmd 'diffmerge --merge

--result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo

"$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"'

git config --global mergetool.diffmerge.trustExitCode true

这些命令的作用其实就是修改用户目录下的.gitconfig文件。比如这是的我的~/.gitconfig文件:

.gitconfig git diff

好了,接下来就可以使用git difftool命令来比较代码了:

# 将某个文件的当前版本和代码库中的版本做比较

git difftool index.php

# 将某个文件的当前版本,和某个分支中这个文件的版本做比较

git difftool some-branch script.js

# 将两个tag中的某个文件做比较

git difftool tag1..tag2 style.css

# 比较两个分支

git difftool branch1 branch2

成功运行的话就会出现diffmerge的窗口。这使查看比较大量的代码更新变得方便直观。

DiffMerge & Git

另外还可以用git mergetool来解决merge时的冲突。

当然git不只支持diffmerge,还可以凭你自己的喜好选用其他的第三方软件,包括但不限于:

kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,

ecmerge, diffuse, opendiff, p4merge, araxis等等。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐