git diff

工作目录 vs 暂存区

git diff <filename>

查看文件在工作目录与暂存区的差别。如果还没 add 进暂存区,则查看文件自身修改前后的差别。

git diff <branch> <filename>

查看文件和另一分支的区别

暂存区 vs Git仓库

git diff --cached <filename>

表示查看已经 add 进暂存区但是尚未 commit 的内容同最新一次 commit 时的内容的差异。

git diff --cached <commit> <filename>

指定仓库版本比较。

工作目录 vs Git仓库

git diff <commit> <filename>

查看工作目录同Git仓库指定 commit 的内容的差异。
<commit>=HEAD 时:查看工作目录同最近一次 commit 的内容的差异。

Git仓库 vs Git仓库

git diff <commit> <commit>

Git仓库任意两次 commit 之间的差别。

说明:

以上命令可以不指定 <filename>,则对全部文件操作。
以上命令涉及和 Git仓库 对比的,均可指定 commit 的版本。

  • HEAD最近一次 commit
  • HEAD^上次提交
  • HEAD~100上100次提交
  • 每次提交产生的哈希值

diff --git a/rainbow.txt b/rainbow.txt,git diff实质上用的是diff的文本比较工具,其中a/diff.txt代表源文件,也就是修改前的文件, b/diff.txt代表比目标文件,也就是修改后的文件;
index c8686ac..5daa196 100644, index后面两个字符串表示两个文件的hash值,最后的数字是文件的权限和属性(?);
---代表源文件,+++代表目标文件;
差异小结,@@ -1,2 +1,3 @@,分为两个部分,第一个是-1,2,-表示源文件,1,2表示从第一行开始的两行,后面的+1,3,则表示目标文件的第一行开始的三行内容。差异小结可能会有多个。

剩下的行都是具体的差异信息,其中以空格开头的行代表源文件与目标文件没有差异,以-开头 的行代表在源文件的基础上删除,以+开头代表在源文件基础上添加。

原文地址:https://www.cnblogs.com/yxfcnbg/p/12589601.html