如何在 GitHub 上删除提交?

我 “不小心” 将提交推送到 GitHub。

是否可以删除此提交?

我想还原此提交之前的 GitHub 存储库。

答案

注意:请在下面的注释中查看git rebase -i替代方法 -

git reset --soft HEAD^

首先,删除本地存储库上的提交。您可以使用git rebase -i做到这一点。例如,如果这是您的最后一次提交,则可以执行git rebase -i HEAD~2并删除弹出的编辑器窗口中的第二行。

然后,使用git push origin +branchName --force强制推送到 GitHub

有关更多信息,请参阅Git Magic 第 5 章:历史经验 - 然后再读一些 (例如,如果要删除较早的提交)。

哦,如果您的工作树很脏,则必须先执行git stash ,然后再执行git stash apply

git push -f origin HEAD^:master

那应该 “撤消” 推动。

如果只是一个错误,则可以轻松还原(也许您分叉了一个存储库,然后最终将其推送到原始版本而不是新版本),这是另一种可能性:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

显然,用该数字交换要返回的提交编号。

一旦您再次按下,此后的所有内容都会被删除。为此,下一步将是:

git push --force
  1. git log找出要还原的提交

  2. git push origin +7f6d03:master而 7f6d03 是错误推送的提交之前的提交。 +用于force push

就是这样。

是一个很好的指南,可以轻松轻松地解决您的问题!

如果您希望在删除后保留提交更改,请执行以下操作:

请注意,如果要删除的提交是最后提交的提交,则此解决方案有效。


1 - 从日志中复制您要返回的提交引用:

git log

2 - 将 git 重置为提交参考:

git reset <commit_ref>

3 - 将本地更改从错误的提交存储 / 存储,以供以后推送到远程使用:

git stash

4 - 将更改推送到远程存储库(-f 或 --force):

git push -f

5 - 将存储的更改取回本地存储库:

git stash apply

7 - 如果更改中有未跟踪 / 新文件,则需要在提交之前将它们添加到 git 中:

git add .

6 - 添加所需的任何其他更改,然后提交所需的文件(或使用点 '。' 而不是说明每个文件名,以提交本地存储库中的所有文件:

git commit -m "<new_commit_message>" <file1> <file2> ...

要么

git commit -m "<new_commit_message>" .

您需要清除缓存以完全清除缓存。这个来自 git 的帮助页面将为您提供帮助。 (对我有帮助) http://help.github.com/remove-sensitive-data/

使用git revert恢复您的推送。

git-revert - 还原一些现有的提交

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

还原相关补丁程序引入的更改,并记录一些记录它们的新提交。这要求您的工作树是干净的(HEAD 提交没有任何修改)。

1. git reset HEAD^ --hard
2. git push origin -f

这项工作对我来说。

要从远程存储库中删除提交:

git push -f origin last_known_good_commit:branch_name

为了从本地存储库中删除提交,请执行以下操作:

git reset --hard HEAD~1

链接

删除最近的提交,并保留已完成的工作:

git reset --soft HEAD~1

删除最近的提交,破坏您已完成的工作:

git reset --hard HEAD~1