美文网首页
Git 系列之「文件状态」

Git 系列之「文件状态」

作者: 豆豆先生的小屋 | 来源:发表于2018-03-27 14:45 被阅读9次

    Git 的文件状态是其核心,明白文件状态后对各种操作都有非常大的帮助,不同的文件状态又存储在不同的工作区域中。

    文件状态

    未跟踪(untracked):表示文件为新增加的。
    已缓存(staged):缓存区的文件都是这个状态。
    已提交(committed):表示文件已保存在版本库中。
    已修改(modified):表示修改了文件,但还没保存到版本库中。

    工作区域

    工作区:电脑里面的目录,比如上面的 git_test 文件夹。
    缓存区:存放在版本库里面。所有经过 git add 操作的文件都会到这个区域来。
    版本库:隐藏目录 .git

    上篇文章说了,提交文件到版本库是分为两步的。
    第一步执行git add把文件添加到缓存区。
    第二部执行git commit把缓存区的文件提交到版本库。
    反正就是需要提交的文件修改通通放到缓存区,然后,一次性提交缓存区的所有修改到版本库。

    接着上一篇文章的操作再过一遍。向hello.md写入一些内容,并创建一个新的文件test.txt,内容随便写就行。

    $ echo "Hello Git" > hello.md
    $ touch test.txt
    $ echo "Hello Git Test" > test.txt
    

    执行git 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:   hello.md
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            test.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    hello.md 被修改,test.txt从未被添加过,状态是未跟踪(untracked)。

    接着把hello.mdtest.txt都添加金缓存区,执行git status看一下状态。

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

    然后执行 git commit把缓存区的修改提交的版本库。

    $ git commit -m 'add test.txt'
     2 files changed, 2 insertions(+)
     create mode 100644 test.txt
     
    $ git status
    On branch master
    nothing to commit, working directory clean
    

    提交完之后,工作区是干净的,缓存区也是干净的。
    这个缓存区的概念非常重要,一定要理解。

    文件状态与工作区域对应关系

    刚开始时工作区域是空的,没有任何文件,然后我们初始化版本库。
    新创建的文件都是"未跟踪"状态,放在工作区;
    执行完 ·git add之后的文件都是“已缓存”状态,放在缓存区;
    执行完git commit之后的文件都是“已提交”状态,放在版本库中;
    缓存区的文件被修改了,文件是处于“已修改”状态,放在缓存区中;
    版本库中的文件被修改,跟创建新文件类似,只不过该文件不是“未跟踪”状态,而是“已修改”状态。可以重新走git add & git commit流程。

    相关文章

      网友评论

          本文标题:Git 系列之「文件状态」

          本文链接:https://www.haomeiwen.com/subject/cpujcftx.html