git diff 比较文件_超实用,Git如何比较文件差异

a54aa1b0a989d9debd30735da09f8fc7.png

阐述

在实际工作中,文件差异的比较是经常会碰到的,今天就来总结一下git diff命令的使用。

使用场景

当我们上线一个分支时,往往会碰到要和master分支做比较的情况,需要确认分支所提交的修改是否属于都自己的,会不会把别人的修改一起提交上去,这个时候就要以master分支为参照,比较自己分支和master分支之间的差异。我们还可能会碰到,为了确认某次的线上Bug,需要对比历史提交的版本和当前版本之间的差异。

如何比较不同分支之间的文件差异

git diff master dev

上面的命令是以master分支为参照,比较dev分支和master分支之间的差异。注意改变分支的比较顺序,结果会不同,默认不加文件名参数,会比较出所有文件的差异。 比较指定文件的差异可以参照如下命令:

git diff master dev -- READMD.md index.php

实际Git在设计上,用了一个指针来指向当前分支所在commit对象,master分支实际上为一个指针,在不分离头指针的情况下,它指向的是最新一次提交的commit对象,dev分支也是。 所以把命令git diff master dev替换成git diff fde17e9 4700e4a也是一样的效果,使用git log命令就能查看当前master分支和dev分支所指向的commit id。 commit id是经过SHA1加密算法计算出来的40位十六进制HASH值,Git是分布式的,它不像SVN等集中式控制版本,是用一个自增长ID来标志每次的提交。 一般我们取SHA1计算出来的前7位就能标识出来某次的提交,比较不同版本之间的差异,也用的commit id来指代版本。

如何比较工作区和版本库之间的文件差异

Git中用一个叫HEAD的指针指向当前分支的最新一次提交,我们可以用以下命令来比较工作区和版本库之间的文件差异

比较全部文件: git diff HEAD

比较单个文件: git diff HEAD -- READMD.md

比较单个文件或者某几个文件,需要加上--,以下就不再举例单个文件的差异比较了,大家记住这个规则就好。

如何比较工作区和暂存区之间的文件差异

使用默认的git diff,不加任何参数,默认比较的是工作区和暂存区之间的文件差异。

如何比较暂存区和版本库之间的文件差异

使用git diff --cached或者git diff --staged来比较暂存区和版本库之间的文件差异,cached和staged都有表示缓存的意思。

最后,用一张图来总结文章的内容,希望对大家有帮助。

e3acce52aafa2acf1406fd0fe1ce3114.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值