git 回滚错误的push

2021-05-25 20:15:59 浏览数 (1)

code_rollbackcode_rollback

一、背景

有时候,工作时会错误地对一些修改进行commit并push到远程,这时候想回滚这部分commit,并且远程分支也同步回滚

二、git 操作

首先,查看需要回滚到哪个commit-id

代码语言:txt复制
git log

# 如果需要查看详细的改动,可以尝试使用如下命令
git log -p

接着,回退到具体的commmit-id处(注意,reset --hard是不可逆的,详细查看reset --hardreset --soft的区别)

代码语言:txt复制
# 本地git
git reset --hard <commit-id>

# 特殊情况:如果本地还有没有提交的变更
git stash
git reset --hard <commit-id>
git stash pop

最后,强制使用本地变更覆盖remote ref

代码语言:txt复制
# remote git 同步
git push --force-with-lease origin <mybranch>

三、实战

需要修复branch my-test-branch

代码语言:txt复制
$ git branch
* my-test-branch
  master

需要回滚到0d1d7fc32e5a

代码语言:txt复制
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

回滚 && 同步

代码语言:txt复制
git reset --hard 0d1d7fc32e5a947f
git push --force-with-lease origin my-test-branch

0 人点赞