Git

Git学习笔记 04

修改管理

Posted by Huper on December 12, 2017

这一节里主要讲到如何对Git的修改进行详细的管理。Git之所以优秀,很重要的一个原因就是它追踪修改的粒度很细。先看这样一个例子,还是在之前的文件中添加一句话。然后执行add操作添加到暂存区:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   huper.txt

这样的结果意料之中,但是这个时候我们先不急着提交,如果继续对文件进行另外一个修改后再提交,结果如下:

$ git commit -m "update"
[master fa57a4e] update
 1 file changed, 1 insertion(+)

注意到我们事实上应该是有两次插入操作,但是这个时候附加信息里显示的却是1 insertion,并且我们如果用status命令查看会发现的确有个修改没有被添加:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   huper.txt
no changes added to commit (use "git add" and/or "git commit -a")

这个例子其实充分反映了Git强大的修改管理力度,事实上在使用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。这里用我们还可以用git diff命令可以查看工作区和版本库里面最新版本的区别:

$ git diff HEAD -- huper.txt
diff --git a/huper.txt b/huper.txt
index f5df9a1..c70c748 100644
--- a/huper.txt
+++ b/huper.txt
@@ -4,4 +4,4 @@ added version 1.
 added version 2.
 added version 3.
 added stage test.
-added change test.
+added change test append.

上面最后两句显示的就是最近的一次修改,我添加了一个append,这个修改还没有提交,所以diff会在这个地方使用-和+的标志来表示这里添加了一个东西。所以这里一定要继续git addgit commit,也可以在第一次commit之前先git add然后再统一git commit

总结:

add操作非常重要,每次修改之后一定要进行add操作。

git diff HEAD 查看工作区与版本库(保存已经commit过的版本)中文件的差别。