git diff 命令可以对比两个版本的差异,具体来说包括:
- 本地工作区和暂存区的diff信息:git diff 或者 git diff file
- 暂存区和版本库的diff信息(使用git add 将工作区修改保存到了暂存区后):git diff --cached
- 版本库中不同commit、分支的diff信息(使用git commit 将暂存区修改提交到了版本库):git diff commit1 commit2 或 git diff branch1 branch2
技巧:一般将要对比的分支/commitid名字放到第二个参数,这样对比起来比较直观。
1、分支diff:
1)基本操作
- git diff branch1 branch2 --stat //--stat参数,显示两分支简单diff信息
- git diff branch1 branch2 //显示两分支详细的diff信息
- git diff branch1 branch2 path //显示两分支指定路径下文件的详细diff信息
- git diff branch1 branch2 file_name(带路径) //显示两分支指定文件的详细diff信息
注:这里的分支可以是本地的,也可以是远程的(git diff branch1 origin/branch2)
2)查看当前目录和另外一个分支的差别:
我们都知道,正常情况下只有我们用commit命令提交到了版本库,才可以使用git diff branch1 branch2 命令来查看分支间的diff信息。
有的时候我们在工作区开发完(可以保存到暂存区),不想提交到当前分支的版本库中,想查看一下其他分支和我当前改动的diff信息,然后再确定是否要提交到版本库中,该如何做呢?可以使用如下命令:查看当前目录和另外一个分支的差别(当前目录未提交到版本库)
git diff branch
然后使用commit将暂存区修改提交到版本库,就可以使用git diff master test_3查看了:
扫描二维码关注公众号,回复:
12654023 查看本文章
2、版本的diff:
git diff commitid1 commitid2
上述命令可以查看不同提交的差异。
我们都知道HEAD(大写)可以理解成当前分支的最新提交,HEAD^表示上一个提交(也可以写成HEAD~1),HEAD~n表示当前分支前n次提交。
由于commitid是一个32位的串比较难书写,可以使用HEAD来简单代替: