git reflog 后悔药操作

  • git log

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

$ git log
commit e475afc93c209a690c39c13a46716e8fa000c366 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

HEAD指向的版本就是当前版本
因此,Git允许我们在版本的历史之间穿梭,使用命令: git reset --hard commit_id

$ git reset --hard eaadf4

现在,你回退到了某个版本,而且新添加了一些东西,新commit之后关掉了电脑,第二天发现把别人的代码都冲掉了,gg…

  • git reflog 我叫它后悔药(^^)

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。
Git提供了一个命令git reflog用来记录你的每一次命令

$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

终于舒了口气,这时候要记好两个值:他们分别是新commit的hash码和旧版本最新的hash码。然后执行回滚,回到旧版本最新上:

$ git reset --hard 1094a

别忘了,本地回退回来之后,记得强制推送到远程,

$ git push origin HEAD --force

此时,我们又想保留新commit的代码,怎么办呢?

  • git cherry-pick

这个时候就用上了git cherry-pick,刚刚我们回到了旧版本最新,现在我们想加上新commit,操作如下

git cherry-pick `新commit的hash码`

期间可能会有一些冲突,按照提示解决就好

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值