我可以在不删除最近提交的情况下删除源/主合并历史记录吗?

Posted

技术标签:

【中文标题】我可以在不删除最近提交的情况下删除源/主合并历史记录吗?【英文标题】:Can I remove origin/master merge history without removing recently commits? 【发布时间】:2021-11-19 19:00:44 【问题描述】:

我从master 分支到branch2,进行了一些更改并提交了。当我推送时,我看到我所做的任何新的拉取审查都会有一堆提交,例如

Merge branch 'master' of github.com:repo/name
Merge branch 'master' of github.com:repo/name
Merge branch 'master' of github.com:repo/name
Merge branch 'master' of github.com:repo/name
Merge branch 'master' of github.com:repo/name
Merge branch 'master' of github.com:repo/name
...
My actual commit message here

是否可以在保持我的真实提交的同时进行变基?

【问题讨论】:

"是否可以在保持我的真实提交的同时进行变基?"当然,在推送之前重新设置分支的基础是非常标准的,这样您就可以将 merge base 移动到 master 的末尾。你试过了吗?当然,现在有点晚了;如果此时你变基,你将不得不 force 推送你的分支。考虑这一点的时间是推动之前。但是强制推动可能不会造成任何伤害。 你提到你“做了一些改变”,也“做了一个提交”。您是否也将 master 合并到您的分支 6 次? 【参考方案1】:

如果你是唯一一个在那个 PR 分支上工作的人,现在重新调整它并强制推送它还为时不晚:

git fetch
git switch branch2
git rebase origin/master
# check everything still work(!)
git push --force

【讨论】:

以上是关于我可以在不删除最近提交的情况下删除源/主合并历史记录吗?的主要内容,如果未能解决你的问题,请参考以下文章

我分享了我的提交历史?

在 Git 中,如何在不挑选新分支的情况下对历史中具有多个合并提交的分支进行 rebase + squash

如何在不删除最新提交的情况下恢复到上一个​​提交?

Git - 如何在不快速转发和合并为当前的情况下恢复以前的提交

删除 git 历史记录中包含合并的特定提交

如何在不丢失历史记录的情况下从 SVN 存储库中删除***目录?