版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pulong0748/article/details/82024578
上篇我们介绍了创建git仓库和git add ,git commit命令的使用 ,现在我们来解决一下大家的疑惑,为什么不直接去git commit ,而要分成两步?这也是这篇文章要表达的重点。
- 工作区
工作区很简单的理解就是你本地工作的目录,但要注意的是这个目录一定是被git管理的目录。但是也要明白并不包括.git目录。 - 暂存区
暂存区其实就位于你的.git目录下,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head,如下图:
从图中我们可以看出:版本库里面包括了index 和 master,看着图上的箭头,大概可以明白工作区先将内容添加到(index)暂存区中,然后最终提交到master分支。add操作(工作区->暂存区),commit操作(暂存区->当前分支(如图当前为master))。
接下来我们从文件状态去分析文件从工作区到提交到版本库的过程。我们需要知道从git管理的角度文件只有两种状态:未跟踪以及已跟踪。从你克隆某个仓库的时候,所有文件都处于已跟踪状态。或者从你add某个文件开始,这个文件就处于已经跟踪状态。假如你从远程克隆的话,会看见这个:
$ git status
On branch master
nothing to commit, working directory clean
可以分析以下几点:
- 当前目录 不存在任何为被跟踪的目录
- 所有已经跟踪的文件未被更改过
现在我们先创建一个新的文件叫做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
总结:
1:add 命令 现在暂时有两个作用:1 将文件添加到被跟踪状态 2:将文件从工作区放到暂存区
2:clone仓库所有文件处于被跟踪状态
3:add 文件将使文件处于被跟踪状态,以及进入暂存区。
4:修改文件不add 还是存在于工作区。
5:commit 文件,提交到版本库。
留个问题:假如修改的文件不add ,直接commit呢?
有疑问请留下官人的评论,我会寻找答案并完善博客内容,谢谢官人啦
上一篇:史上最简单的git教程|第二篇:创建git仓库
下一篇:史上最简单的git教程|第四篇:查看提交历史-git log的使用