【问题标题】:Reverting a git pull that's already been pushed恢复已经推送的 git pull
【发布时间】:2023-03-06 13:17:02
【问题描述】:

我不确定这是否是重复的,因为它是一种一次性的场景:

我有一个“beta”分支,并开始了一个新的“重构”分支。

  1. 我在“重构”分支中做了一堆代码。
  2. 我将最新的更改从 beta 提取到重构 (git checkout refactor && git pull origin beta)
  3. 我的更改已准备就绪,因此我检查了 beta,并将更改从重构拉到 beta。 (git checkout beta && git pull origin refactor)
  4. 意识到我的 beta 分支不是最新的,所以必须通过 git pull 将最新版本拉入 beta。
  5. 现在 beta 分支是最新的,再次执行 git pull origin refactor 以确保最新版本存在(收到一条自动提交消息,表明重构正在合并到 beta 中)。
  6. 我推送了我的代码 :(

所以现在我意识到我做错了两件事:

  1. 在第 3 步中,我应该先执行 git pull,以便获得最新的 beta 变更集
  2. 在第 3 步中,我也意识到我应该调用 git merge refactor 而不是 git pull origin refactor(不要问我为什么这样做,现在是星期一,我只是想把我很棒的重构代码变成 beta 开始测试)。我现在意识到,如果我已经完成了这两件事,就不需要后面的任何步骤了。

所以我的问题是:从技术上讲,所有代码都在那里并且看起来不错,但是 github 上的网络图看起来超级时髦,而且我没有一个干净的“合并”提交,如果我可以轻松回滚我的合并分支需要恢复,而不是 beta 刚刚包含来自重构分支的所有个人提交。有没有一种简单的方法可以回滚我的愚蠢合并并以更清洁的方式进行?

我尝试过 git checkout beta && git reset --hard beta@{"1 hour ago"} ,但问题是这让我进入了 outdated 本地测试版版本,而不是在我应该发布合并之前应该是最新版本先做 git pull 。我觉得应该有一种方法可以像git reset --hard origin/beta@{"1 hour ago"} 那样在 1 小时前重置到 remote beta 分支@,然后执行git merge refactor?我是否能够推送这些更改并确保远程提交被覆盖?

提前感谢您的帮助!我对使用“git reset”做任何事情犹豫不决,因为重构非常重要,并且在 beta 中有很多我没有做的待定更改,所以我更担心搞砸重置并丢失代码比我担心必须从拉入的重构分支手动恢复提交。

【问题讨论】:

    标签: git git-merge git-push git-pull git-reset


    【解决方案1】:

    你有没有强制推送 beta 分支?

    如果是这样,我假设您不需要与其他开发人员同步这个,所以可以再次强制推送。在这种情况下,我建议:

    • 例如为最后 10 次提交“git rebase -i HEAD~10”进行交互式变基
    • 删除从重构分支合并的提交,并确保测试版是干净的并更新分支的最新版本
    • 强制推送
    • 转到重构分支并将其重新设置为 beta(git checkout refactor && git rebase beta)
    • 进入 beta 并在没有 ff 的情况下合并重构(git checkout beta && git merge --no-ff refactor)
    • 这将为您提供漂亮且可读的历史图表

    如果您不能强制推动,那么您可能会使图表更加复杂。您可以对从重构中退出的每个 beta 提交进行还原提交。这样,您将让 beta 分支进入干净和更新的状态。之后,只需重复上层配方的最后 3 个步骤。你会从中得到很好的图表,但在此之前的历史会保留下来。

    【讨论】:

    • 不,我没有在重置后强制推送,因为其他开发人员还有其他待处理的更改,我不想放弃他们的更改。我的重构最终工作得很好,所以我现在不会为此烦恼,但如果我最终需要恢复所有内容,我肯定会使用它。谢谢!
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2013-02-22
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多