Git中,有 工作区、缓存区(Stage)、HEAD分支 三种概念。
git add命令将工作区的修改存入缓存区;git commit命令将缓存区的全部内容上传到HEAD所指向的分支(默认为master分支)。
现假设经过一些修改、缓存、提交操作后,当前项目中的file.txt文件在工作区、缓存区、HEAD仓库中的版本内容都不一样:
工作区记为A,其中的file.txt内容为aaa;
缓存区记为B,其中的file.txt内容为bbb;
HEAD分支记为C,其中的file.txt内容为ccc。
那么此时,执行不同的 git diff 命令究竟是对比哪两个区的file.txt文件:
- 执行"git diff file.txt"——对比A和B
- 执行"git diff HEAD file.txt"——对比A和C
- 执行"git diff --staged file.txt"——对比B和C