数据在工作区、暂存区、版本库回退问题和解决方案

导读:本篇文章讲解 数据在工作区、暂存区、版本库回退问题和解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一 基本概念

工作区(Working Directory):指的是我们的项目所在的目录。

版本库(Repository):指的是工作区 .git 目录。如下图所示,版本库主要有三部分组成。

  • index :也就是我们讲的暂存区;
  • HEAD :指向分支的指针,默认指向 master;
  • refs 目录下创建的分支(版本库初始化的时候创建 master 分支)。

数据在工作区、暂存区、版本库回退问题和解决方案

二 命令探究

2.1 git add a.txt 命令发生了什么事情呢?

将在工作区的 a.txt 文件添加到暂存区 index了,此时在暂存区内是有 a.txt 文件的。

2.2 git commit a.txt -m’add a.txt’  命令发生了什么事情呢?

将位于暂存区的 a.txt 文件提交到版本库的一个分支,此时暂存区没有了 a.txt 文件。

三 数据回退

3.1 如何放弃工作区内文件的修改?

比如说我们在工作区对 a.txt 文件进行了修改,但是我们觉得修改不满意,想放弃这个修改,如何操作呢?

可以使用:git checkout  a.txt   放弃对文件的修改。

3.2 如何将暂存区文件回退到工作区?

比如说,我们使用 git add 命令将文件添加到暂存区,这个时候发现添加文件错误。如何将放弃暂存区的修改,重新放回工作区?

可以使用: git reset HEAD a.txt 将文件变成修改状态。

3.3 版本库如何将多个提交合并成一个提交?

假设我们对 a.txt 文件进行了三次提交,如图所示:

数据在工作区、暂存区、版本库回退问题和解决方案

别人不知道,我们这块针对一个功能最好是一次提交,那这个意味着我们这块需要对多个提交合并成一个提交。这块如何实现呢?

方式一:git rebase -i HEAD~n

这个n代表提交次数,这块取3就行。

数据在工作区、暂存区、版本库回退问题和解决方案

将第二个和第三个 pick 修改成 s。

数据在工作区、暂存区、版本库回退问题和解决方案

编辑 commit log

数据在工作区、暂存区、版本库回退问题和解决方案

方式二:git reset commit_id

这个 commit_id 是第一次提交之前的 commit_id,这个命令相当于将文件的多次提交回退未提交 commit 状态。

这块需要通过 git add a.txt 、git commit -m ‘修改a.txt文件’ 来达到 commit 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/9606.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!