首页 > 解决方案 > 如何从远程仓库中删除特定提交

问题描述

我有一个远程仓库,总共有 7 次提交(我们称它们为 A - G,G 是最近的提交)。提交 C 和 E 实际上并不保证一个全新的提交,我想将它们从远程提交历史记录中删除,同时保持提交 G 作为 HEAD。我怎样才能做到这一点?

标签: git

解决方案


git文档对此进行了如下说明:


还可以使用 rebase 删除一系列提交。如果我们有以下情况:

E---F---G---H---I---J  topicA

然后命令

git rebase --onto topicA~5 topicA~3 topicA

将导致删除提交 F 和 G:

E---H'---I'---J'  topicA

如果 F 和 G 在某些方面存在缺陷,或者不应该是 topicA 的一部分,这很有用。请注意, --onto 的参数和参数可以是任何有效的 commit-ish。


但这首先仅适用于本地回购。因此,当将此修改后的提交历史推送到您的远程时,您需要有足够的权限才能这样做。有关详细信息,请参阅强制推送。我可以根据我自己的经验告诉你,这可能是 MS TFS 中的一个问题。


推荐阅读