Git:git diff 命令详解

工做目录 vs 暂存区

$ git diff <filename>

意义:查看文件在工做目录与暂存区的差异。若是还没 add 进暂存区,则查看文件自身修改先后的差异。也可查看和另外一分支的区别。git

$ git diff <branch> <filename>

暂存区 vs Git仓库

git diff --cached <filename>

意义:表示查看已经 add 进暂存区可是还没有 commit 的内容同最新一次 commit 时的内容的差别。 也能够指定仓库版本:bash

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 之间的差异。code

扩展:

以上命令能够不指定 <filename>,则对所有文件操做。 以上命令涉及和 Git仓库 对比的,都可指定 commit 的版本。it

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

最佳实践

准备工做:class

  • 新建文件 test.txt;
  • 追踪文件:git add test.txt;
  • 首次提交:git commit -m "Create file test.txt"

开始测试:test

一、修改文件内容,例如添加一行“000” 二、查看修改:git diff test.txt扩展

此时因为没有向暂存区暂存此修改,此时做用是查看工做目录文件的修改。file

三、提交一次:git commit -m "add line 000" 四、修改文件内容,例如添加一行“111” 五、暂存这次修改:git add test.txt,不做 commit 六、再次修改文件夹内容,例如添加一行“222” 七、查看修改:git diff test.txt最佳实践

此时查看文件在工做目录(222)与暂存区(111)的差异。

其它命令自行测试

相关文章
相关标签/搜索