在 GitHub 上撤销一次 Git push

21

我犯了一个错误...而且我不知道该如何修复它。

我来解释一下这个问题。

我在我的项目上工作,进行了第一次提交。 在这个提交中,添加了两个很大但没用的文件... 我并不想要这些文件,所以我执行了一个

git rm file

然后再次提交了。 我很愚蠢,因为我推到了 Github 呵呵呵 :).

我想你已经找到问题所在了...

我怎样才能从我的本地和 Github 存储库中彻底删除这些文件(特别是 Github)。

我在互联网上找到了一些帮助,但我不想破坏我的整个存储库。

谢谢

2个回答

31

如果没有其他人提交过代码,你应该将本地分支恢复到你想要的状态(可能是通过重置到之前的位置或通过交互式变基来删除不需要的提交),然后再使用-f(强制)选项向github进行推送:

git push -f <remote-name> <branch-name>

如果其他人已经进行了拉取操作,通常的建议是:在执行强制更新之前,阅读git-rebase手册中的recovering from upstream rebase部分,以了解您对其他人所做的更改。

2
如果您想删除(而不是还原)带有新文件的最后一次提交,我认为您应该执行以下操作:
git reset --soft "HEAD^"

无论如何,既然你已经将它推送到github,如果不重新创建git仓库,就不能将其删除。这就是它的工作原理,你可以还原每个提交,例如你删除那2个大文件的提交。由于这是一个新的仓库,并且你正在谈论初始提交,重新创建仓库对我来说似乎是最好的想法。


4
“你不能在不重新创建Git仓库的情况下删除它。” 呃,是可以的。这可能会影响其他已经更新的人,但是你确实可以这样做。 - Cascabel
2
我不知道你可以从远程仓库中删除它,谢谢伙计。 - Piotr Karbowski
只需执行 git reset HEAD^ 即可;混合重置也会重置暂存区,但与 --hard 不同的是,它不会影响工作目录。接下来通常会执行 git add -p - Kos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接