Git - 将Pushed Head中的大型提交历史恢复到错误的分支

时间:2017-11-01 07:19:17

标签: git version-control git-reset git-revert git-rewrite-history

我的一位同事以某种方式推动了我的团队正在为我们的主要开发部门工作的发布分支的HEAD修订版。 (这将是145次提交不当推送)

我想保持我们的提交历史记录清洁,所以我想要做任何事情,或者只是创建一个新的开发分支来开始工作。

我不能简单地做一个

git revert <last-trusted-sha>..HEAD

因为分支上有多个合并(从我们执行pull请求时开始,Git创建合并remote_currentbranch到currentbranch)。

有没有办法轻松解决这个问题?或者我只是提交提交,直到它被纠正?

由于

2 个答案:

答案 0 :(得分:2)

要恢复development分支,您可以使用以下命令:

git checkout development
git reset --hard HEAD~145 
git push -f

或者如果您知道development分支上的最后一次提交sha-1值在release分支上的提交被推送到development分支之前,您还可以使用{{1替换命令git reset --hard <last commit>。然后将恢复git reset --hard HEAD~145分支。

答案 1 :(得分:0)

这在技术上应该很容易解决:

  • 找到您要恢复的上一个正确的提交。
  • git branch develop THEHASH -f
  • git push origin develop -f

通常,出于对同事的尊重,你不会做这样的事情。但在这种情况下,一切都已经破坏了,所以你也可以。

要找到正确的提交145步,git reflog可能会有所帮助,除非您可以使用git log轻松找到它。