mac上有什么查看mac git diff 工具的工具

Git配置可视化的diff 和merge工具 - __熊_ - 博客园
Windows下使用Git,msysgit是首选,但是msysgit的shell实在不给力,大小不能更改,字体难看。所以,在Windows下,在Cygwin下使用Git是个很不错的选择。
我们在提交代码前,或是合并代码,查看代码修改时,经常要diff一下看看都有哪些修改内容,diff的输出,晦涩难懂,修改多了的时候,简直像天书一样。Git 1.7以后,有了一个difftool的命令,使用它,用户可以选择一个自己喜欢的diff工具来查看不同提交之间的差异。这个工具可以是命令行的如vimdiff,也可以是带GUI的如Winmerge等。
Windows下的Diff工具有很多,(免费), (收费),装了的话,也带有一个Diff工具TortioseIDiff。
这里推荐一款,支持Windows,Mac,Linux,非常好用。
首先,新建一个脚本 /usr/bin/mydiff.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
同样的道理,我们也可以使用自定义的Merge工具
首先,新建一个脚本 /usr/bin/mymerge.sh,使用以下内容
# path for DiffMerge
DMPATH="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 ]
echo "No Base, Use Empty"
TMPBASE="/tmp/git-empty-base"
touch $TMPBASE
BASEPATH=$(cygpath -w -a "$TMPBASE")
# 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
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
tool = mydiff
[difftool "mydiff"]
cmd = mydiff.sh \"$LOCAL\" \"$REMOTE\"
diff = auto
status = auto
branch = auto
interactive = true
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
autocrlf = true
tool = mymerge
[mergetool "mymerge"]
cmd = mymerge.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = false
这时再看log,直观很多29被浏览4102分享邀请回答33 条评论分享收藏感谢收起12 条评论分享收藏感谢收起查看更多回答Mac专用免费的Git客户端:SourceTree
我的图书馆
Mac专用免费的Git客户端:SourceTree
时间:日 更新
文件大小: 23.29 MB
开发商:Torus Knot Software Ltd
支持类型:
支持语言:英文等
简介SourceTree是一款免费的 Mac Git客户端工具,同时也是Mercurial和Subversion版本控制系统工具
相关软件推荐
详细介绍SourceTree是一款免费的 Mac Git客户端工具,同时也是Mercurial和Subversion版本控制系统工具北京时间3月5日消息,由于苹果将改变Mac应用商店规则,要求所有应用程序必须在沙箱内运行,对于SourceTree而言,苹果应用商店规则改变使得SourceTree进退两难,因为这一举措将会破坏SourceTree重要功能,迫使SourceTree进行功能性删除,损坏SourceTree程序可用性的同时也会影响到广大用户的利益。因此SourceTree作了个“艰难”的决定,宣布从日开始,SourceTree不再提供更新到苹果应用商店。对SourceTree影响苹果强制Mac应用商店里所有程序使用沙箱,使得SourceTree应用于虚拟控制的功能将会减少或者无法访问文件、网络或其他资源,除非苹果专门推出操作系统,或者动态授予权限(如果这可能的话),否则将会影响到SourceTree功能,如打开文件系统对话框中的特权操作等。根据其官方博客显示,具体对SourceTree影响如下:文件访问问题:在沙箱中,只能自动访问他们规划好的存储器,这只是一个单一的应用,类似用户根目录、偏好文件夹的本地版本。而SourceTree功能之一就是提供输入和直接复制、粘贴到文本框路径的功能,同时也能让用户获得合理的默认值,使用户的操作更简便,但是强制使用沙箱后会导致用户不能再像以前那样简便输入路径,使得SourceTree用户访问文件出现问题。重新启动后文件位置丢失:SourceTree一个关键功能就是可以在一个地方跟踪你所有资料库,并可以随时显示状态,但是在沙盘技术中,当你第一次添加库而后重启电脑,应用程序的文件位置会丢失。如果要想解决这个问题,苹果得开放库的完整文件和位置,这显然是不可能的。共享工具无法配置:当用户使用SourceTree时,SSH密钥和代理配置都是自动获得,所以通过SSH访问远程数据库显得很高效。然而沙盘技术将会使标准的SSH无法配置,所有的SSH访问都将失败,除非能在存储器中将复制的配置和SSH密钥单独加到代理中,但是这对SourceTree来说是棘手以及不好解决的,虽然短期内是可以解决此问题,但是使得用户体验很差,因为SourceTree只有在运行的时候才能访问存储器里的用户主目录,这一限制使得共享工具无法配置。禁止与终端等集成:沙盒里的应用程序是不允许发送苹果事件,这使得SourceTree启动终端和iTerm无法导航到项目文件夹中,意味着SourceTree将失去这一项非常有用的功能。虽然有人反应苹果这方面问题,要求他们考虑用户和苹果应用程序之间的信息反馈机制,然而到现在这依然是关闭的,就目前而言,这个问题是无法得到解决。除此之外,也还有其他方面的问题但就不一一罗列了。艰难的抉择从根本上来说,苹果强制要求所有应用程序使用沙盒技术,是一个不错的主意,因为这可以增加用户的安全体验。但同时也会使得某些应用程序执行复杂的工具行为时受到限制,从而导致功能性缺失,因此让用户的体验非常糟糕。最后SourceTree指出,当做出退出苹果应用商店这一艰难决定痛苦了几个月,但为了用户有更好的应用体验,SourceTree只能退出。同时SourceTree也解释到,SourceTree很乐意与苹果通过协商解决此问题,但是就目前而言只能停止更新退出应用商店。
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢下载的时候要下载Installer版的
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
git difftool
貌似中文会有乱码,谁能告知怎么处理呢?
本文已收录于以下专栏:
相关文章推荐
1.Beyond Compare
下载地址:/download.php
破解方法:...
参考文章:
/2011/08/install-diffmerge-git-mac-os-x/
注意问题:
1、下载时要下载:Dow...
Compare Merge
作为一个开放人员,比较代码和合并代码是常有的事,以前都是用Beyond Compare这软件来比较的,后面发现Xcode自带的FileMerge也挺好用的,还省的...
一般在使用git diff时,看到的是console下的对比提示。 如果使用基于GUI的diff工具将会更加直观,提高效率。
选择的是p4merge , 下载路径: ...
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%...
下载地址:
http://download-/DiffMerge/3.3.0/Apple/DiffMerge.3.3.0.1001.dmg
>>> import datetime
>>> today = datetime.date.today()
>>> oneday = datetime.timedelta(days=1)
python中,无论是对的list求和还是求积,我都给出了两种方法。
1。对list求和
in range(10):
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 git 查看diff 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信