如何删除推送的 git 合并提交

Posted

技术标签:

【中文标题】如何删除推送的 git 合并提交【英文标题】:How to delete a pushed git merge commit 【发布时间】:2021-04-20 11:05:02 【问题描述】:

我将几个 devel 提交合并到我的 repo 的 master 分支中,只是为了发现 GitAhead 在某个时候搞砸了 master。

现在我尝试了 SO 上描述的各种方法以撤消这些提交(除了 master 上的合并之外没有其他提交)。这样master确实被重置为更早的版本。

但是,我仍然在无头分支中拥有完整的合并历史记录(图像上的灰色路径):

enter image description here

我尝试恢复、重置等分支但没有成功,唉!

如何完全删除提交(c518859ce4、7574f10f68)?

【问题讨论】:

问题是第一次提交的标签。它使幽灵犯下的罪行保持活力。摆脱它并检查您的重置大师。 成功了!非常感谢! 耶!我喜欢这种情况发生。我会给出这个答案。 【参考方案1】:

问题是第一次提交的标签。它使幽灵提交保持活力。

摆脱标签并检查您的重置主机(我认为它位于图表下方的某个位置)。您的历史记录将看起来正确。

【讨论】:

【参考方案2】:

1) 选项恢复:

   git revert c518859ce4
    git revert 7574f10f68

那你就可以推送了:

git push

【讨论】:

这似乎并不能解决问题,除非我做错了什么:这将创建一个合并提交,而不是删除错误/不必要的提交!有没有办法完全删除从某个位置开始的分支或无头分支?!没有合并,没有备份,只是撤消错误的提交?! 好吧,给读者一个提示:它确实有效,只要没有标签阻止提交被垃圾收集(见答案)!

以上是关于如何删除推送的 git 合并提交的主要内容,如果未能解决你的问题,请参考以下文章

2022-03-02 如何修改git 已经推送的log日志

IntelliJ/GIT:如何从提交窗口清除/删除文件?

如何从合并请求中删除跟踪的文件

如何从 git repo 中删除一个文件夹? [复制]

git:如何使其“意识到”文件已被删除[重复]

你如何恢复错误的 git 合并提交