为了账号安全,请及时绑定邮箱和手机立即绑定

恢复提交记录

标签:
Git

使用方法

不管是修改、压缩还是撤销提交记录,都有可能造成提交的丢失,那么该如何找回原来的提交呢?
最常用的方法,是使用 git reflog 指令,reflog 中记录着每一次提交或改变分支的值。

执行 git log,列出 bugfix 分支上的所有提交:

$ git checkout bugfix
$ git log
commit 05eff054b9690250b97e910520677d3c5e39e156 (HEAD -> bugfix, origin/bugfix)
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Fri Mar 1 11:15:51 2024 +0800

    第二次修改bugfix

commit da135880e3805b027f33e873da6bd02e5cb2099f
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Fri Mar 1 11:14:46 2024 +0800

    修改bugfix

commit ca5ebf0f7e0438c514b9039594e86b6bc1ef64e2
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Tue Jan 30 16:24:42 2024 +0800

    first commit
(END)

执行变基操作压缩前两次的提交记录:

$ git rebase -i ca5ebf0
$ git log
commit 601f7a53bdd68f5f17e381182b3b2b7df1d9c1d4 (HEAD -> bugfix)
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Fri Mar 1 11:14:46 2024 +0800

    修改bugfix

commit ca5ebf0f7e0438c514b9039594e86b6bc1ef64e2
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Tue Jan 30 16:24:42 2024 +0800

    first commit
(END)

如果想恢复压缩的提交,首先可以通过执行 git reflog 指令来查看曾经做过什么。

$ git reflog
601f7a5 (HEAD -> bugfix) HEAD@{0}: rebase (finish): returning to refs/heads/bugfix
601f7a5 (HEAD -> bugfix) HEAD@{1}: rebase (squash): 修改bugfix
da13588 HEAD@{2}: rebase (start): checkout ca5ebf0
05eff05 (origin/bugfix) HEAD@{3}: commit: 第二次修改bugfix
da13588 HEAD@{4}: commit: 修改bugfix
ff34906 (origin/main, main) HEAD@{5}: checkout: moving from main to bugfix
...

05eff05 看起来就是最后一次提交,可以通过 git reset 来恢复它:

$ git reset 05eff05
$ git log
commit 05eff054b9690250b97e910520677d3c5e39e156 (HEAD -> bugfix, origin/bugfix)
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Fri Mar 1 11:15:51 2024 +0800

    第二次修改bugfix

commit da135880e3805b027f33e873da6bd02e5cb2099f
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Fri Mar 1 11:14:46 2024 +0800

    修改bugfix

commit ca5ebf0f7e0438c514b9039594e86b6bc1ef64e2
Author: zhanglianwei <zhanglianwei@meituan.com>
Date:   Tue Jan 30 16:24:42 2024 +0800

    first commit
(END)
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消