查看代码仓库状态

版本控制的一个非常重要的部分就是可以让开发者知道当前的开发状态,经过一段时间的开发,目前的代码修改与未修改之前的具体差异是什么。前面笔者也提到了git status指令,通过这个指令可以告诉开发者当前代码仓库中所有文件的版本追溯,当前哪一个文件进行了修改。例如,在上一节中笔者创建了一个README文件,但却是一个空文件。下面笔者打开这个文件,输入一段文本“this is my readme!”。接下来,使用git status指令查看当前代码仓库的版本修改,代码如下所示。

  1. GradleTest git:(master) vim README
  2. GradleTest git:(master) git status
  3. On branch master
  4. Changes not staged for commit:
  5. (use "git add <file>..." to update what will be committed)
  6. (use "git checkout -- <file>..." to discard changes in working directory)
  7.  
  8. modified: README
  9.  
  10. no changes added to commit (use "git add" and/or "git commit -a")

可以发现,Git提示它检测到了一个修改过的文件——“modified:README”,并提升使用git add\commit进行版本管理。

那么除了使用git status查看文件的修改状态,开发者还可以通过git diff指令查看发生变化文件的具体变化,例如输入git diff README指令。

  1. diff --git a/README b/README
  2. index e69de29..a226c41 100644
  3. --- a/README
  4. +++ b/README
  5. @@ -0,0 +1 @@
  6. +this is my readme!
  7. (END)

Git显示出了指定文件的具体修改,提示新的文件增加了一行修改。在了解了被修改文件的修改内容后,就可以使用前一节讲到的git add\commit指令来添加这些新的修改到版本管理了。

git diff指令除了比较指定文件的差异,还可以比较提交节点间的差异,例如使用如下所示代码比较与上一个commit节点间的差异。

  1. GradleTest git:(master) git diff HEAD

同理,通过指定不同的HEAD,例如HEAD^、HEAD^^,还可以比较更早版本的差异。

除了上面使用Git自带工具进行diff操作的示例,实际上Git还支持使用第三方的diff工具进行diff操作。而且这些第三方diff工具通常要比Git终端中的diff功能更加强大,开发者可以根据自己的喜好配置diff工具,如Meld、beyond compare等。