史上最简单的git教程|第三篇:理解工作区和暂存区

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pulong0748/article/details/82024578

上篇我们介绍了创建git仓库和git add ,git commit命令的使用 ,现在我们来解决一下大家的疑惑,为什么不直接去git commit ,而要分成两步?这也是这篇文章要表达的重点。

  • 工作区
    工作区很简单的理解就是你本地工作的目录,但要注意的是这个目录一定是被git管理的目录。但是也要明白并不包括.git目录。
  • 暂存区
    暂存区其实就位于你的.git目录下,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head,如下图:这里写图片描述
    从图中我们可以看出:版本库里面包括了indexmaster,看着图上的箭头,大概可以明白工作区先将内容添加到(index)暂存区中,然后最终提交到master分支。add操作(工作区->暂存区),commit操作(暂存区->当前分支(如图当前为master))。

接下来我们从文件状态去分析文件从工作区到提交到版本库的过程。我们需要知道从git管理的角度文件只有两种状态:未跟踪以及已跟踪。从你克隆某个仓库的时候,所有文件都处于已跟踪状态。或者从你add某个文件开始,这个文件就处于已经跟踪状态。假如你从远程克隆的话,会看见这个:

$ git status
On branch master
nothing to commit, working directory clean

可以分析以下几点:

  1. 当前目录 不存在任何为被跟踪的目录
  2. 所有已经跟踪的文件未被更改过
    现在我们先创建一个新的文件叫做ttt.txt,然后再看一下git status:
$ git  status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ttt.txt

nothing added to commit but untracked files present (use "git add" to track)

很明显你只是新建了一个文件,所以现在还没有被跟踪,假如你想让git去跟踪呢,很简单喽,添加进去喽:
跟踪新文件:

git  add  ttt.txt

可以看出new file :ttt.txt ,表明这个文件已经被跟踪了

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

        new file:   ttt.txt

那么接下来我们修改一下这个ttt.txt文件,然后再git status,发现已经modified

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:   ttt.txt

需要明白,现在文件被修改了但是存在于工作区,add命令将会将它推到暂存区。

Changes to be committed:   (表示ttt.txt处在暂存区,请注意前面这段英文)
  (use "git reset HEAD <file>..." to unstage)

        new file:   ttt.txt  

Changes not staged for commit:(表示helloGit还处在工作区,请注意前面这段英文)
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   helloGit.txt

总结:

1add 命令 现在暂时有两个作用:1 将文件添加到被跟踪状态 2:将文件从工作区放到暂存区
2:clone仓库所有文件处于被跟踪状态
3add 文件将使文件处于被跟踪状态,以及进入暂存区。
4:修改文件不add 还是存在于工作区。
5:commit 文件,提交到版本库。

留个问题:假如修改的文件不add ,直接commit呢?

有疑问请留下官人的评论,我会寻找答案并完善博客内容,谢谢官人啦


上一篇:史上最简单的git教程|第二篇:创建git仓库
下一篇:史上最简单的git教程|第四篇:查看提交历史-git log的使用

猜你喜欢

转载自blog.csdn.net/pulong0748/article/details/82024578
今日推荐