【问题标题】:How to undo merge request with its commits?如何撤消合并请求及其提交?
【发布时间】:2019-05-13 07:43:25
【问题描述】:

我在 gitlab 上对我的分支 develop 做了一个 merge request。 然后我意识到我犯了一个巨大的错误。 我迅速按下revert 按钮,我认为一切都好,但不是。 Gitlab 只提交了revert。在日志中仍然有来自源分支的提交。它会导致许多版本问题。无论如何,任何解决方案都可以在 gitlab 平台上恢复单个合并请求并从许多不需要的提交中清除分支日志。我希望我的分支就像这个合并请求从未有过的地方一样。

【问题讨论】:

标签: git gitlab git-merge git-revert


【解决方案1】:

首先创建一个新分支keepsafe 以将所有这些更改保留在某处,以防万一您搞砸了。这将在本地“复制”当前状态并将其保存到远程。

git checkout -b keepsafe
git push

现在回去开发。 X 是您要删除的提交数。

git checkout develop
git reset --hard HEAD~X
git push -f

将本地开发硬重置为原始提交。 git push -f 将覆盖远程分支。所有提交都将消失。

请注意,GitLab 允许管理员禁用强制推送 (git push -f),因此如果这不起作用,您需要与管理员交谈。

【讨论】:

    【解决方案2】:

    您可以使用交互式 rebase 恢复到之前的提交。假设您想将 HEAD 恢复为 HEAD~5(之前提交了 5 次),您可以选择 HEAD~5 的父级,即 HEAD~6,然后在其上应用 HEAD~5。

    git rebase -i HEAD~6
    

    HEAD~6 到 HEAD 之间的每次提交都会被重写。说 HEAD~5 SHA1 是 ABC & HEAD~6 SHA1 是 XYZ。当前的 HEAD 是 PQR。我们需要从下面的编辑中删除其他提交,因为我们不想在 HEAD~6 上重写它们。我们只想在 HEAD~6 之上应用 HEAD~5。我们应该在这个文件中至少有一个条目,否则 rebase 将中止。所以,我们在 HEAD~6 之上应用 HEAD~5。

    edit ABC     reverting to state before merge 
    
    # Rebase XYZ..PQR onto XYZ
    #
    # Commands:
    #  p, pick = use commit
    #  r, reword = use commit, but edit the commit message
    #  e, edit = use commit, but stop for amending
    #  s, squash = use commit, but meld into previous commit
    #  f, fixup = like "squash", but discard this commit's log message
    #  x, exec = run command (the rest of the line) using shell
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    #
    # However, if you remove everything, the rebase will be aborted.
    #
    # Note that empty commits are commented out
    

    现在,发出以下命令来修改历史记录并输入提交信息。

    git commit --amend
    

    现在,发出以下命令以继续并退出编辑器

    git commit --continue
    

    阅读更多rewriting git history

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2011-12-21
      • 2021-06-26
      • 2011-09-22
      • 2020-06-26
      • 2021-05-01
      相关资源
      最近更新 更多