Git中,有 工作区、缓存区(Stage)、HEAD分支 三种概念。

git add命令将工作区的修改存入缓存区;git commit命令将缓存区的全部内容上传到HEAD所指向的分支(默认为master分支)。

Git diff命令:究竟是谁和谁对比?

现假设经过一些修改、缓存、提交操作后,当前项目中的file.txt文件在工作区、缓存区、HEAD仓库中的版本内容都不一样:

工作区记为A,其中的file.txt内容为aaa;

缓存区记为B,其中的file.txt内容为bbb;

HEAD分支记为C,其中的file.txt内容为ccc。

Git diff命令:究竟是谁和谁对比?

那么此时,执行不同的 git diff 命令究竟是对比哪两个区的file.txt文件:

  • 执行"git diff file.txt"——对比A和B
  • 执行"git diff HEAD file.txt"——对比A和C
  • 执行"git diff --staged file.txt"——对比B和C

相关文章: