zoukankan      html  css  js  c++  java
  • Git权威指南学习笔记(二)Git暂存区

    例如以下图所看到的:

    左側为工作区,是我们的工作文件夹。

    右側为版本号库,当中:

    index标记的是暂存区(stage),所处文件夹为.git/index,记录了文件的状态和变更信息。

    master标记的是master分支所代表的文件夹树。HEAD指向master分支。

    objects标记的是Git的对象库,所处文件夹为.git/objects。文件索引建立了文件和对象库中对象实体之间的映射关系。



    通过该图我们能够清晰地看出add,commit等命令的转化关系。以下通过git diff和git status两条命令来理清它们之间的关系。

    1.如果welcome.txt文件为空。我们首先在该文件里增加一行"1 Hello",并通过git add和git commit提交到版本号库中:

    $ git add welcome.txt 
    $ git commit -m "1 Hello"

    2.在welcome.txt文件里加入第二行"2 Git"。仅仅运行git add命令,不运行git commit:

    $ git add welcome.txt

    运行git status -s命令。输出例如以下:


    能够看到第一列的M是绿色的,表示对于welcome.txt文件,master分支中的文件和暂存区中的文件内容不一致。

    第二列的M不存在。表示对于welcome.txt文件,工作区中的文件和暂存区中的文件一致。明显是由于运行了git add操作使得工作区和暂存区中的文件内容同步。

    3.在welcome.txt文件里加入第三行"3 Hello Git"。不运行git add命令。

    输入git status -s。输出例如以下:


    能够看到多了第二列的M。并且是红色的。表示对于welcome.txt文件。工作区中的文件和暂存区中的文件内容不一致。

    4.Git diff魔法

    (1)暂存区和工作区比較:git diff

    $ git diff
    diff --git a/welcome.txt b/welcome.txt
    index 671036a..d6a88bb 100644
    --- a/welcome.txt
    +++ b/welcome.txt
    @@ -1,2 +1,3 @@
     1 Hello
    -2 Git
     No newline at end of file
    +2 Git
    +3 Hello Git
     No newline at end of file

    (2)HEAD和暂存区比較:git diff --cached
    $ git diff --cached
    diff --git a/welcome.txt b/welcome.txt
    index f6abfb2..671036a 100644
    --- a/welcome.txt
    +++ b/welcome.txt
    @@ -1 +1,2 @@
    -1 Hello
     No newline at end of file
    +1 Hello
    +2 Git
     No newline at end of file
    (3)HEAD和工作区比較:git diff HEAD
    $ git diff HEAD
    diff --git a/welcome.txt b/welcome.txt
    index f6abfb2..d6a88bb 100644
    --- a/welcome.txt
    +++ b/welcome.txt
    @@ -1 +1,3 @@
    -1 Hello
     No newline at end of file
    +1 Hello
    +2 Git
    +3 Hello Git
     No newline at end of file


    结合上面的图来看就不难理解了。

    最后。给出原书作者的忠告:不要使用git commit -a,原因是这会让我们失去对提交内容进行控制的能力。


  • 相关阅读:
    【代码笔记】iOS-判断textField里面是否有空
    【代码笔记】iOS-判断字符串是否为空
    【代码笔记】iOS-判断中英文混合的字符长度的两种方法
    【代码笔记】iOS-判断有无网络
    【代码笔记】iOS-判断是否是iPhone5
    iOS动画-扩散波纹效果
    (转)对称加密与非对称加密,以及RSA的原理
    (转)iOS GPUImage研究总结
    @inerface的11条规范写法
    Python开发之路
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5130480.html
Copyright © 2011-2022 走看看