Git配置可视化的diff 和merge工具
来源:互联网 发布:js面向对象小例子 编辑:程序博客网 时间:2024/04/29 12:39
Git配置可视化的diff 和merge工具
Windows下使用Git,msysgit是首选,但是msysgit的shell实在不给力,大小不能更改,字体难看。所以,在Windows下,在Cygwin下使用Git是个很不错的选择。
我们在提交代码前,或是合并代码,查看代码修改时,经常要diff一下看看都有哪些修改内容,diff的输出,晦涩难懂,修改多了的时候,简直像天书一样。Git 1.7以后,有了一个difftool的命令,使用它,用户可以选择一个自己喜欢的diff工具来查看不同提交之间的差异。这个工具可以是命令行的如vimdiff,也可以是带GUI的如Winmerge等。
Windows下的Diff工具有很多,WinMerge(免费),Araxis Merge(收费),装了TortoiseSVN的话,也带有一个Diff工具TortioseIDiff。
这里推荐一款SourceGear MergeDiff,支持Windows,Mac,Linux,非常好用。
1. Diff
首先,新建一个脚本 /usr/bin/mydiff.sh,使用以下内容
#!/bin/sh"$(cygpath -u "C:\Program Files\SourceGear\Common\DiffMerge\sgdm")" \ -caption="DiffMerge For Git" -nosplash $(cygpath -w $1) $(cygpath -w $2)
然后在Git中使用我们的工具
# 设置执行权限> chmod a+x /usr/bin/mydiff.sh# 添加一个diff工具> git config --global diff.tool mydiff# 配置mydiff的命令> git config --global difftool.mydiff.cmd "mydiff.sh \"\$LOCAL\" \"\$REMOTE\""# 查看当前目录的修改> git difftool# 使用-y,不必每次询问> git difftool -y# 查看两个版本之间的差异> git difftool HEAD~2 HEAD
2. Merge
同样的道理,我们也可以使用自定义的Merge工具
首先,新建一个脚本 /usr/bin/mymerge.sh,使用以下内容
#!/bin/sh# path for DiffMergeDMPATH="C:\Program Files\SourceGear\Common\DiffMerge\sgdm"BASEPATH=$(cygpath -w -a "$1")LOCALPATH=$(cygpath -w -a "$2")REMOTEPATH=$(cygpath -w -a "$3")RESULTPATH=$(cygpath -w -a "$4")if [ ! -f $1 ]then echo "No Base, Use Empty" TMPBASE="/tmp/git-empty-base" touch $TMPBASE BASEPATH=$(cygpath -w -a "$TMPBASE")fi# echo "Base: ""$BASEPATH"# echo "Local: ""$LOCALPATH"# echo "Remote: ""$REMOTEPATH"# echo "Result: ""$RESULTPATH""$(cygpath -u "$DMPATH")" -caption="DiffMerge For Git" -nosplash \ -merge -result "$RESULTPATH" -t1=Mine -t2=Merged -t3=Theirs \ "$LOCALPATH" "$BASEPATH" "$REMOTEPATH"
然后设置使用mymerge.sh
> git config --global merge.tool mymerge> git config --global mergetool.mymerge.cmd "mymerge.sh \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\" \"\$MERGED\""> git config --global mergetool.mymerge.trustExitCode false# 当merge和rebase发生冲突的时候> git mergetool
3. Color
msysgit中使用git status时会发现是带颜色输出,看起来很直观,其实设置一下就可以了。
> git config --global color.diff auto> git config --global color.status auto> git config --global color.branch auto> git config --global color.interactive true
或者直接修改~/.gitconfig
[diff] tool = mydiff[difftool "mydiff"] cmd = mydiff.sh \"$LOCAL\" \"$REMOTE\"[color] diff = auto status = auto branch = auto interactive = true[alias] st = status lg = log -p lol = log --graph --decorate --pretty=oneline --abbrev-commit lola = log --graph --decorate --pretty=oneline --abbrev-commit --all ls = ls-files[core] autocrlf = true[merge] tool = mymerge[mergetool "mymerge"] cmd = mymerge.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\" trustExitCode = false
这时再看log,直观很多
0 0
- Git配置可视化的diff 和merge工具
- Git配置可视化的diff 和merge工具
- git 配置 diff 、 merge 工具: kdiff3
- git diff可视化工具
- git diff可视化工具
- git diff/merge 配置
- MAC 上git集成比较diff工具和merge合并工具的使用
- Git diff 与merge工具的设置与使用
- 免费好用的Diff和Merge工具大总结
- 如何使用 vimdiff 来 git diff 和merge diff
- 解决git diff的工具
- 让git diff/merge使用meld等GUI对比工具
- 让GIT DIFF/MERGE使用MELD等GUI对比工具
- 如何在msysgit中配置配置使用diffmerge,作为diff/merge的工具
- git集成Beyond Compare,方便 diff 和 merge
- git gui diff/merge tool
- github merge tool 可视化的合并工具
- Git使用笔记(二)-可视化Merge工具Meld
- 用ping类测试服务器连接
- closure-library 第二章 Closure javascript注解
- javaScript document对象详解
- Get中文乱码,IE浏览器Get中文乱码
- 项目
- Git配置可视化的diff 和merge工具
- 导入要素到SDE时发生错误Cannot insert features
- closure-library 第三章 Closure基本库
- Spring mvc jackson输出null为空字符串、单引号、字段和数字加引号问题Spring mvc3 jackson输出null为空字符串、单引号、字段和数字加引号问题
- OpenWRT环境下做开发
- GPRS学习——SGSN、GGSN、PCU
- 欢迎您在新浪博客安家
- C++
- 函数闭包原理