【问题标题】:Git - Revert Large commit history from Pushed Head to wrong branchGit - 将大提交历史从 Pushed Head 恢复到错误的分支
【发布时间】:2018-04-13 11:35:47
【问题描述】:

我的一位同事不知何故将他对我的团队正在开发的发布分支的 HEAD 修订版推送到我们的主要开发分支。 (这将是 145 次错误推送)

我想保持我们的提交历史干净,所以我正在考虑是否应该做任何事情,或者只是创建一个新的开发分支来开始工作。

我不能简单地做一个

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

因为分支上有多个合并(从我们执行拉取请求并且 Git 创建一个合并 remote_currentbranch 到 currentbranch)。

有什么方法可以轻松解决这个问题吗?还是我只是逐个提交,直到它被纠正?

谢谢

【问题讨论】:

  • 你的同事是如何将 HEAD 版本的release 分支推送到development 分支的?他使用了哪个命令?
  • git rebase -i 并删除所有不需要的提交?
  • @Marina-MSFT 我不确定它是怎么发生的,他们使用的是 eclipse EGit 插件。
  • @RemusRusanu 可以很好地工作。谢谢!另外,我的队友不知何故设法将我们的发布分支设置为跟踪开发分支远程和远程发布。

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


【解决方案1】:

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

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

或者如果您知道release 分支上的提交被推送到development 分支之前development 分支上的最后一次提交sha-1 值,您也可以使用git reset --hard &lt;last commit&gt; 替换命令@987654327 @。然后development 分支将被恢复。

【讨论】:

  • 谢谢,这就是我最终所做的。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2015-03-11
    • 2018-05-28
    • 2015-04-17
    • 2021-11-03
    • 2017-01-31
    • 2011-11-08
    • 2014-07-06
    相关资源
    最近更新 更多