Git核心概念(一): 工作区与暂存区

650 阅读2分钟

工作区与暂存区

概念

首先说明下什么是工作区与暂存区

  • 工作区: 工作区指的就是用户直接操作的地方,简单理解就是你编辑代码时的工程目录下的内容就是你的工作区
  • 暂存区: 这也是git的特色之一,即某次代码修改完成,在正式提交前需要先将修改内容添加到暂存区中,如果没问题则可以commit到版本库,也可以用暂存区内容覆盖工作区内容;类似于在某个时间节点对你的修改做一个快照保存起来,可以用其提交也可以使用它回滚你的代码
  • 版本库: 也就是每次commit后代码正式存储的空间

关系

工作区、暂存区、版本库三者之间的关系如下:

实例演示

在一个git仓库下查看当前状态,显示当前无改动需要提交

# 当前仓库目录结构如下
> ls
readme.txt

# 查看git状态
> git status

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

修改目录下的readme.txt文件,并创建一个demo.html文件,再次查看状态,显示当前已跟踪的文件中有一个文件发生变更,并且有一个文件未被添加到缓存区

> 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)

	demo.html

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

通过git add命令将变更提交到缓存区,这时再查看状态可以发现所有改动已经被正确的添加到缓存区进行跟踪,处于待提交状态

> git add readme.txt demo.html
> git status

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

	new file:   demo.html
	modified:   readme.txt

使用git commit命令将缓存区中内容提交到版本库中

>git commit -m "add demo.html and modify readme"

[master 5dda459] add demo.html and modify readme
 2 files changed, 1 insertion(+)
 create mode 100644 demo.html

# 再次查看git状态,所有改动已经提交至版本库,当前git环境已经是干净的了
> git status
On branch master
nothing to commit, working tree clean

总结

总结一下git提交一修改的基本操作流程:

  1. 在工作区中修改、添加、删除文件
  2. 使用git add命令将文件添加到暂存区中
  3. 使用git commit命令将文件提交到版本库中

系列文章(持续更新中)

Git基础概念相关文章汇总:

Git核心概念(一): 工作区与暂存区

Git核心概念(二): .git目录探秘

Git核心概念(三): 分离头指针