博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git diff 代码比较的高级技巧
阅读量:6185 次
发布时间:2019-06-21

本文共 2340 字,大约阅读时间需要 7 分钟。

Git diff 代码比较的高级技巧

作者:

出处:

Git是使用branch来管理不同的功能点开发的,那么我们怎样能比较不同branch的不同呢?

使用 git diff  branch1 branch2 , 就可以了, 但这个方法不够直观, 因为只能显示不同点的上下几行,不方便理解。

比较好的做法是使用图形化比较工具比较,例如meld,  使用以下的命令就可以了

[html] 
  1. git difftool -t meld -y   branch1 branch2   
这样可以使用meld一个一个文件的比较,每次关闭meld就会自动显示下一个不同的文件。

比较不同的commit,使用以下命令就可以了 

[html] 
  1. git difftool -t meld -y  commitId1  commitId2   

比较工作区和上次提交的差异,这个最常用了 

[html] 
  1. git difftool -t meld -y  HEAD   

你可以使用git  config命令设置meld为默认的比较工具,并且把prompt设为false,这样以后就可以使用git difftool了。

也可以直接修改 .gitconfig

gedit ~/.gitconfig 在最后加入

 [diff]

        tool = meld
[difftool]
        prompt = false

当然了,如果你不喜欢meld,也可以使用其他的比较工具,git difftool 支持以下的比较工具:

           kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
           ecmerge, diffuse, opendiff, p4merge and araxis

--------------------------------------------------------------------------------

比较提交 - Git Diff

作者:

出处:

你可以用  来比较项目中任意两个版本的差异。

$ git diff master..test

上面这条命令只显示两个分支间的差异,如果你想找出‘master’,‘test’的共有 父分支和'test'分支之间的差异,你用3个‘.'来取代前面的两个'.' 。

$ git diff master...test

 是一个难以置信的有用的工具,可以找出你项目上任意两点间 的改动,或是用来查看别人提交进来的新分支。

哪些内容会被提交(commit)

你通常用来找你当前工作目录和上次提交与本地索引间的差异。

$ git diff

上面的命令会显示在当前的工作目录里的,没有 staged(添加到索引中),且在下次提交时 不会被提交的修改。

如果你要看在下次提交时要提交的内容(staged,添加到索引中),你可以运行:

$ git diff --cached

上面的命令会显示你当前的索引和上次提交间的差异;这些内容在不带"-a"参数运行 "git commit"命令时就会被提交。

$ git diff HEAD

上面这条命令会显示你工作目录与上次提交时之间的所有差别,这条命令所显示的 内容都会在执行"git commit -a"命令时被提交。

更多的比较选项

如果你要查看当前的工作目录与另外一个分支的差别,你可以用下面的命令执行:

$ git diff test

这会显示你当前工作目录与另外一个叫'test'分支的差别。你也以加上路径限定符,来只 比较某一个文件或目录。

$ git diff HEAD -- ./lib

上面这条命令会显示你当前工作目录下的lib目录与上次提交之间的差别(或者更准确的 说是在当前分支)。

如果不是查看每个文件的详细差别,而是统计一下有哪些文件被改动,有多少行被改 动,就可以使用‘--stat' 参数。

$>git diff --stat layout/book_index_template.html                    |    8 ++- text/05_Installing_Git/0_Source.markdown           |   14 ++++++ text/05_Installing_Git/1_Linux.markdown            |   17 +++++++ text/05_Installing_Git/2_Mac_104.markdown          |   11 +++++ text/05_Installing_Git/3_Mac_105.markdown          |    8 ++++ text/05_Installing_Git/4_Windows.markdown          |    7 +++ .../1_Getting_a_Git_Repo.markdown                  |    7 +++- .../0_ Comparing_Commits_Git_Diff.markdown         |   45 +++++++++++++++++++- .../0_ Hosting_Git_gitweb_repoorcz_github.markdown |    4 +- 9 files changed, 115 insertions(+), 6 deletions(-)

有时这样全局性的查看哪些文件被修改,能让你更轻轻一点。

转载于:https://www.cnblogs.com/leonxyzh/p/7289070.html

你可能感兴趣的文章
mysql数据库数据(字段数过大)太多导入不了的解决方法
查看>>
字符串逆序输出
查看>>
【原】Java学习笔记011 - 数组
查看>>
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
查看>>
oracle物化视图
查看>>
浅谈JavaScript中的定时器
查看>>
SpringMVC修改功能
查看>>
Unity 编辑器 Inspector
查看>>
ArcGIS 客户端API加载大量数据的几种解决方法(转载)
查看>>
性能测试初学_loadrunner脚本增强
查看>>
通过队列解决Lucene文件并发创建索引
查看>>
Sharepoint ECMAScript
查看>>
jQuery获取自动截取过长的文本内容,显示成省略号
查看>>
nginx 代理http配置实例
查看>>
python: 不同级别的日志输出到不同文件的日志类
查看>>
一般处理程序HttpHandler的应用
查看>>
C#中double值的精度问题
查看>>
python-redis缓存-pool
查看>>
【团队博客】暑期软件开发学习感悟
查看>>
fitnesse - 用例创建编辑、管理、执行和日志
查看>>