首页 > 解决方案 > git rebase 如何消除先前已合并到 master 上的提交?

问题描述

在我的拉取请求(将分支 X 合并到 master)中,我看到提交 A、B 和 C 已经合并到 master。

我被建议重新设置分支强制推送。

git rebase -i HEAD~3自从第 4 次提交合并到 master 以来,我就这样做了。然后我用--allow-empty.

在我的新 PR(将 X 合并到 master)中,我仍然看到旧的合并提交。

我应该如何变基然后推送到我的分支 X?

谢谢!

标签: gitrebase

解决方案


插图或某些git log --decorate --oneline --graph输出(作为纯文本)可以改善您的问题。我在这里做了一些我认为合理的假设。

您通常不需要使用交互式变基,而您想要的是:

git fetch                   # make sure origin/* are up to date
git checkout X              # get onto your local branch, if needed
git rebase origin/master    # copy the commits, except for the merge

那么你的git push,假设你的分支 X 也在origin分支上X,将是:

git push --force-with-lease origin X

--force-with-lease选项在一些非常旧的 Git 版本中不可用;如果您有其中之一,请使用 plain -f,但这会绕过--force-with-lease提供的安全检查。


推荐阅读