如何删除GitHub上的提交

时间:2018-04-18 13:30:00

标签: git github

我按照此链接删除了GitHub上的提交:

并尝试删除提交:

$ git push -f origin HEAD^:master

但它向我显示了这个错误:

error: src refspec HEAD^ does not match any.
error: failed to push some refs to 'origin'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

让我们首先更好地了解您尝试使用的命令会做什么。它不会“删除提交”;它会在master上编辑origin的历史记录,目的是新历史记录不会包含最近的提交。

或者换句话说,它会将origin的{​​{1}}移到您目前已签出的提交之前的提交中 - 如果您目前已签出master,则如果您的本地mastermaster的{​​{1}}同步,则可以从origin的历史记录中删除最近的提交。

但是你得到的错误表明 在当前错误之前没有提交。如果您无法移动master,则无法移动master

当然,如果您要做的是删除远程上唯一的提交,最简单的方法就是销毁并重新创建存储库。

现在基于这一切,您可能想知道“那么命令只是从远程删除提交?”......好吧,没有一个。最好你可以从历史记录中删除一个提交 - 但在你这样做之前,你需要了解这样做的后果 - 然后git最终可能会在数据库的定期维护过程中删除提交。

在推送分支时编辑分支历史记录的后果是,您将为共享它的所有其他用户(如果有的话)将存储库置于损坏状态。他们在尝试执行例行操作时会遇到错误,如果他们做了“明显”的事情来解决这些错误,它将撤消历史编辑并将你的 repo置于破坏状态。因此,如果存在repo的其他用户,则必须与它们协调才能对原点进行历史编辑。有关详细信息,请参阅“从上游Rebase恢复”下的master文档。