03-git工作区、暂存区、版本库介绍

164 阅读3分钟

1. 介绍

工作区(Working Directory)

工作区是我们进行代码编写和文件操作的地方。比如,在一个名为learngit的项目中,learngit文件夹就是工作区,我们在这里创建文件、编写代码等操作都属于工作区操作。

暂存区(Staging Area)

暂存区是一个临时保存改动的地方。通过 git add 命令可以将工作区的文件修改添加到暂存区,准备提交到版本库。执行 git commit 命令后,暂存区的内容会被清空。

版本库(Repository)

版本库是Git最核心的部分,包含了项目的元数据和对象数据库。当我们在项目目录执行 git init 后,Git会创建一个隐藏目录 .git,这个目录就是版本库。版本库中包含了暂存区(也称为stage或index)、默认创建的第一个分支master,以及指向master的HEAD指针。

小结

将文件添加到Git版本库的操作分为两步:

  1. 使用 git add 将文件修改添加到暂存区。
  2. 使用 git commit 将暂存区的所有内容提交到当前分支(即Git本地仓库)。

2. 撤销修改

2.1 撤销工作区修改

如果在工作区修改了文件,但还没有执行 git add 命令,可以使用 git checkout -- filename 撤销修改:

git checkout -- filename

2.2 撤销暂存区修改

如果已经执行了 git add 将文件添加到暂存区,现在想要撤销修改:

  1. 撤销暂存区的修改

    git reset HEAD filename
    
  2. 再撤销工作区的修改

    git checkout -- filename
    

2.3 撤销版本库修改

如果已经提交了不合适的修改到版本库,并且想要回退到历史版本,可以使用 git reset --hard commit_id 命令:

  1. 查看提交记录,获取要回退的 commit_id

    git log
    
  2. 使用 git reset --hard commit_id 回退版本:

    git reset --hard commit_id
    

对于 git reset 命令,有三种参数:

  • soft:仅仅移动版本库HEAD指针,不会重置暂存区和工作区。
  • mixed:移动版本库HEAD指针,并且重置暂存区,但不重置工作区。
  • hard:移动版本库HEAD指针,重置暂存区和工作区,彻底回退到某个版本。

注意: git reset --hard 命令会直接修改工作区的内容,请谨慎使用,避免数据丢失。

总结

通过本文,你了解了工作区、暂存区和版本库的概念及其操作:

  • 工作区是文件编辑和操作的地方。
  • 暂存区是用来暂时保存改动的地方,可以使用 git add 将工作区的修改添加到暂存区。
  • 版本库是包含项目所有元数据和对象数据库的地方,可以通过 git commit 将暂存区的内容提交到版本库。

同时,你学会了如何撤销工作区、暂存区和版本库中的修改,以及 git reset 命令的不同参数及其使用场景。这些知识对于有效地使用Git来管理和追踪项目的改动非常重要。


参考文章:
廖雪峰git教程:工作区和暂存区

廖雪峰git教程:撤销修改

廖雪峰git教程:版本回退

git系列文章

01-git常用命令汇总

02-git config介绍

03-git工作区、暂存区、版本库介绍

04-git log命令介绍

05-git关联远程仓库

06-git分支管理策略

07-git合并冲突

07-git合并冲突场景

08-git配置多个ssh密钥