我按照此链接删除了GitHub上的提交:
并尝试删除提交:
$ git push -f origin HEAD^:master
但它向我显示了这个错误:
error: src refspec HEAD^ does not match any.
error: failed to push some refs to 'origin'
我该如何解决这个问题?
答案 0 :(得分:3)
让我们首先更好地了解您尝试使用的命令会做什么。它不会“删除提交”;它会在master
上编辑origin
的历史记录,目的是新历史记录不会包含最近的提交。
或者换句话说,它会将origin
的{{1}}移到您目前已签出的提交之前的提交中 - 如果您目前已签出master
,则如果您的本地master
与master
的{{1}}同步,则可以从origin
的历史记录中删除最近的提交。
但是你得到的错误表明 在当前错误之前没有提交。如果您无法移动master
,则无法移动master
。
当然,如果您要做的是删除远程上唯一的提交,最简单的方法就是销毁并重新创建存储库。
现在基于这一切,您可能想知道“那么是命令只是从远程删除提交?”......好吧,没有一个。最好你可以从历史记录中删除一个提交 - 但在你这样做之前,你需要了解这样做的后果 - 然后git最终可能会在数据库的定期维护过程中删除提交。
在推送分支时编辑分支历史记录的后果是,您将为共享它的所有其他用户(如果有的话)将存储库置于损坏状态。他们在尝试执行例行操作时会遇到错误,如果他们做了“明显”的事情来解决这些错误,它将撤消历史编辑并将你的 repo置于破坏状态。因此,如果存在repo的其他用户,则必须与它们协调才能对原点进行历史编辑。有关详细信息,请参阅“从上游Rebase恢复”下的master
文档。