从 master 中删除合并

Remove a merge from master

我有一个分支合并到 master 中。然后我们将其他东西合并到 master 中。所以我们现在在 master

中有这个状态
------------------------------
stuff added to master recently
------------------------------
my branch merged into master
------------------------------
old stuff in master
------------------------------

我想从 master 中删除我的合并并保持所有其他不变,以便我在 master 中获得以下状态

------------------------------
stuff added to master recently
------------------------------
old stuff in master
------------------------------

我该怎么做?

您可以在 master 上进行交互式变基,并使用该交互式变基会话删除您不再需要的提交 (git rebase -i)。

git checkout master
git rebase -i <SHA1 old stuff in master>

请注意,它会更改 master 历史记录,如果您已经将 master 推送到远程仓库,这将导致 git push --force。对于已经从同一个远程仓库中提取的其他人来说,这可能会带来不便。

如果你已经推送了 master,那么 git revert -m 1 would be easier to push as well: See "Undo a Git merge?”。这将创建一个新的提交(取消合并)