我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
当前回答
你需要从你想要还原的提交中知道你的提交哈希。你可以从GitHub URL获取它,比如:https://github.com/your-organization/your-project/commits/master
假设提交的哈希(您要返回的位置)为“99fb454”(长版本“99fb 45413eb9ca4b3063e07b40402b136a8cf264”),那么您需要做的就是:
git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force
其他回答
首先将本地更改保存在一旁的某个位置(备份)
您可以浏览最近的提交,然后单击“复制完整SHA”按钮将其发送到剪贴板。
如果您的最后一个提交哈希是,那么让我们说g0834hg304gh3084gh(例如)
您必须运行:
git推送原点+g0834hg304gh3084gh:主
使用您先前复制的哈希,使其成为“HEAD”版本。
添加所需的本地更改。完成;)
git reset HEAD^ --hard
git push origin -f
这对我有用。
在Github上找到你想成为分支负责人的提交的参考规范,并使用以下命令:
git推送原点+[ref]:[branchName]
在您的情况下,如果您只想返回一次提交,请查找该提交的ref的开头,例如它是7f6d03,以及要更改的分支的名称,例如它为master,然后执行以下操作:
git推送原点+7f6d03:主
加号被解释为--force,这是必要的,因为您正在改写历史。
请注意,任何时候你强制提交,都可能会改写合并你分支的其他人的历史。然而,如果你很快发现了问题(在其他人合并你的分支之前),你就不会有任何问题。
git push -f origin HEAD^:master
这应该会“撤销”推送。
如果您希望在删除后保留提交更改:
请注意,如果要删除的提交是最后一次提交的提交,则此解决方案有效。
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> ...
or
git commit -m "<new_commit_message>" .