Git: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次提交
  • 每次提交产生的哈希值

最佳实践

准备工作:

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

开始测试:

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

此时由于没有向暂存区暂存此修改,此时作用是查看工作目录文件的修改。

3、提交一次:git commit -m "add line 000"
4、修改文件内容,例如添加一行“111”
5、暂存此次修改:git add test.txt,不作 commit
6、再次修改文件夹内容,例如添加一行“222”
7、查看修改:git diff test.txt

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

其它命令自行测试。

推荐阅读更多精彩内容

  • 一、Git工作流程 以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。 Workspac...
    LeiLv阅读 7,426评论 2 43
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 9,595评论 9 161
  • 来源:Git由浅入深之操作与指令作者:惊鸿三世(转载已获得原作者许可,如需转载请与原作者联系) 本篇正式开始介绍G...
    极乐君阅读 1,126评论 9 67
  • 我爱你,所有人都知道。 只是或迟或早不得不放弃。真心喜欢过的人是没办法做朋友的,不管怎样,多看哪怕一眼也还是会想拥...
    顾玮_Nicole阅读 43评论 0 0
  • 【深度语文课程2017下·水浒传课程】杨志(清心有源) 提交人:清心有源 邮箱:444710321@qq.com ...
    2009清心有源阅读 2,313评论 0 7