当前位置:首页分享Git入门(八):工作区和暂存区

Git入门(八):工作区和暂存区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

先来看名词解释。

工作区(Working Directory)

就是你在电脑里能看到的目录,比如之前创立的gitearning文件夹就是一个工作区。

版本库(Repository)

工作区中有一个名为.git的隐藏目录,这并不是工作区的一部分,而是Git的版本库所在地。Git的版本库中存储了许多关键信息,其中最重要的是暂存区(也称为index)。暂存区是一个用于准备提交的区域,你可以将修改后的文件添加到暂存区,然后再一起提交到Git仓库中。

除了暂存区,Git还为我们自动创建了一个名为master的分支。分支是Git中用于并行开发的功能,每个分支都代表了一个独立的开发线路。master分支通常是默认的主分支,用于存储稳定的代码。

在Git中,还有一个名为HEAD的指针,它始终指向当前所在的分支的最新提交。通过HEAD,Git能够知道当前的工作是基于哪个版本的,从而确保每次提交和回退操作都是准确无误的。

当我们想要把文件添加到Git版本库中时,这个过程分为两个步骤:

  1. 使用git add命令将文件添加到暂存区。这一步是将你对文件的修改标记为准备提交的状态。

  2. 使用git commit命令提交暂存区的更改。这一步实际上是将暂存区中的所有修改内容正式提交到Git的版本库中。

值得注意的是,当我们首次创建一个Git版本库时,Git会自动为我们创建一个名为master的分支。因此,在默认情况下,执行git commit命令时,实际上是向master分支提交更改。

现在,我们再练习一遍,先对readme.txt做个修改,比如加上一行内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.

然后,在工作区新增一个LICENSE文本文件(内容随便写)。

先用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:   readme.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	LICENSE

no changes added to commit (use "git add" and/or "git commit -a")

Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked

现在,使用两次命令git add,把readme.txtLICENSE都添加后,用git status再查看一下:

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

	new file:   LICENSE
	modified:   readme.txt

现在,暂存区的状态就变成这样了:

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

$ git commit -m "understand how stage works"
[master e43a48b] understand how stage works
 2 files changed, 2 insertions(+)
 create mode 100644 LICENSE

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:

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

现在版本库变成了这样,暂存区就没有任何内容了:

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧