设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

如何在Git中重置、恢复,返回到以前的状态(3)

发布时间:2018-08-16 16:44 所属栏目:117 来源:Brent Laster
导读:注意那个 C3' 和 C5' 在 master 分支上已处于提交链的顶部,由于产生了更改而创建了新提交。但是也要注意的是,rebase 后原始的 C3 和 C5 仍然在那里 只是再没有一个分支指向它们而已。 如果我们做了这个变基,然后

注意那个 C3'C5'— 在 master 分支上已处于提交链的“顶部”,由于产生了更改而创建了新提交。但是也要注意的是,rebase 后“原始的” C3C5 仍然在那里 — 只是再没有一个分支指向它们而已。

如果我们做了这个变基,然后确定这不是我们想要的结果,希望去撤销它,我们可以做下面示例所做的操作:

  1. $ git reset 79768b8

由于这个简单的变更,现在我们的分支将重新指向到做 rebase 操作之前一模一样的位置 —— 完全等效于撤销操作(图 6)。

图 6:撤销 rebase 操作之后

图 6:撤销 rebase 操作之后

如果你想不起来之前一个操作指向的一个分支上提交了什么内容怎么办?幸运的是,Git 命令依然可以帮助你。用这种方式可以修改大多数操作的指针,Git 会记住你的原始提交。事实上,它是在 .git 仓库目录下,将它保存为一个特定的名为 ORIG_HEAD 的文件中。在它被修改之前,那个路径是一个包含了大多数最新引用的文件。如果我们 cat 这个文件,我们可以看到它的内容。

  1. $ cat .git/ORIG_HEAD
  2. 79768b891f47ce06f13456a7e222536ee47ad2fe

我们可以使用 reset 命令,正如前面所述,它返回指向到原始的链。然后它的历史将是如下的这样:

  1. $ git log --oneline feature
  2. 79768b8 C5
  3. 000f9ae C3
  4. 259bf36 C2
  5. f33ae68 C1
  6. 5043e79 C0

在 reflog 中是获取这些信息的另外一个地方。reflog 是你本地仓库中相关切换或更改的详细描述清单。你可以使用 git reflog 命令去查看它的内容:

  1. $ git reflog
  2. 79768b8 HEAD@{0}: reset: moving to 79768b
  3. c4533a5 HEAD@{1}: rebase finished: returning to refs/heads/feature
  4. c4533a5 HEAD@{2}: rebase: C5
  5. 64f2047 HEAD@{3}: rebase: C3
  6. 6a92e7a HEAD@{4}: rebase: checkout master
  7. 79768b8 HEAD@{5}: checkout: moving from feature to feature
  8. 79768b8 HEAD@{6}: commit: C5
  9. 000f9ae HEAD@{7}: checkout: moving from master to feature
  10. 6a92e7a HEAD@{8}: commit: C4
  11. 259bf36 HEAD@{9}: checkout: moving from feature to master
  12. 000f9ae HEAD@{10}: commit: C3
  13. 259bf36 HEAD@{11}: checkout: moving from master to feature
  14. 259bf36 HEAD@{12}: commit: C2
  15. f33ae68 HEAD@{13}: commit: C1
  16. 5043e79 HEAD@{14}: commit (initial): C0

你可以使用日志中列出的、你看到的相关命名格式,去重置任何一个东西:

  1. $ git reset HEAD@{1}

一旦你理解了当“修改”链的操作发生后,Git 是如何跟踪原始提交链的基本原理,那么在 Git 中做一些更改将不再是那么可怕的事。这就是强大的 Git 的核心能力之一:能够很快速、很容易地尝试任何事情,并且如果不成功就撤销它们。

【编辑推荐】

  1. 前后端必备Linux基础知识大科普
  2. Linux内存管理之全局框架
  3. Chrome OS优化支持Linux应用:可双击.deb文件安装
  4. 对 Linux 用户一记暴击:Dropbox 或将停止支持 Linux
  5. 如何在Linux中使用Fio来测评硬盘性能
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读