git作为分布式版本管理工具,各种强大之处不言自明,但是他的检查文件修改变动的功能不得不说和Svn相比比较弱(当然是指在命令行下),如果在开发环境中去查看修改等功能和svn我个人感觉没有什么差别。但是使用git如果运用开发环境里的插件去使用,有种玷污了强大的git的的嫌疑。命令行下查看git文件修改的可以配置许多第三放工具,这里介绍两种,感觉这两种用着比较舒服。
一:git命令介绍
1.1:git diff/difftool
git diff :默认查看当前修改并且没有add 的内容
git diff --cached :查看已经add 并且没有commit 的内容
git diff HEAD 是上面查看上面两种条件的并集。
git diff versinnum1 versinnum2 : 比较两个版本号码文件的修改差异。
二:diffmerge 配置
1、下载diffmerge
2、配置环境
2.1:在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
2.2:或者在~/.gitconfig中添加如下代码。
[diff]
tool = diffmerge
[difftool "bc3"]
cmd = /usr/bin/bcompare \"$LOCAL\" \"$REMOTE\"
[merge]
tool = diffmerge
[difftool]
prompt = false
[mergetool "bc3"]
cmd = /usr/bin/bcompare \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
[difftool "diffmerge"]
cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[mergetool "diffmerge"]
cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
trustExitCode = true
三:beyond compare配置。
3.1:下载beyond compare(最好搜索破解版下载哈)
下载地址:http://www.scootersoftware.com/BCompareOSX-4.1.6.21095.zip,安装成功然后打开,在菜单中点击安装命令行。
3.2:在~/.gitconfig中添加如下配置。
[diff]
tool = bcomp
[difftool "bcomp"]
cmd = \"/usr/local/bin/bcomp\" \"$LOCAL\" \"$REMOTE\"
[difftool]
prompt = false
[merge]
tool = bcomp
[mergetool]
prompt = false
[mergetool "bcomp"]
cmd = \"/usr/local/bin/bcomp\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
3.3:上面两种任何一种配置成功后,执行如下:
在terminal下运行如命令,用来查看工作区和缓存区的文件修改情况:
git difftool ,显示场景:会依次打开比较修改的文件(这样就可以在关闭一个,就自动打开下一个修改的文件)
git difftool HEAD -- readme.txt(比较当前文件ready.text的修改情况)。
git difftool命令的用法应该和git diff一样,只是配置好git difftool工具后可以以更加友好的方式打开。
四:附带一份亲测可用的Mac OS .gitconfig文件
[user]
name = ******
email = ******@163.com
[alias]
lg = log --pretty=format:'%C(auto) %h | %ai | %Cred %an %Cgreen %s'
st = status
ci = commit
dt = difftool
mt = mergetool
[difftool]
prompt = false
[diff]
tool = bc
[difftool "bc"]
cmd = \"/Applications/Beyond Compare.app/Contents/MacOS/bcomp\" \"$LOCAL\" \"$REMOTE\"
[mergetool "bc"]
cmd = \"/Applications/Beyond Compare.app/Contents/MacOS/bcomp\" \"$LOCAL\" \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$MERGED\"
trustExitCode = false