加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门站长网 (https://www.0592zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2018-08-17 10:46:56 所属栏目:Windows 来源:Brent Laster
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 用简洁而优雅的 Git 命令撤销仓库中的改变。 使用 Git 工作时其中一个鲜为人知(和没有意识到)的方面就是,如何轻松地返回到你以前的位置 也就是说,在仓库中如何很容易

注意那个 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

(编辑:厦门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!