我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
当前回答
为了方便还原,还有一种可能性(自提交以来的所有内容都将被删除):
git reset --hard commit_hash_you_want_to_return_to
例如,如果您想将分支重置为过去的提交,如71c27777543ccfcb0376dcdd8f6777df055ef479:
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
下一步是将分支修改推送到源(远程回购):
git push --force
注意
请记住,如果其他贡献者正在与您的分支机构合作,他们可能会遇到冲突或其他问题,因为您正在更改分支机构的历史记录,但仅限于您,而不是那些已经使用您的分支的人。当心
其他回答
首先将本地更改保存在一旁的某个位置(备份)
您可以浏览最近的提交,然后单击“复制完整SHA”按钮将其发送到剪贴板。
如果您的最后一个提交哈希是,那么让我们说g0834hg304gh3084gh(例如)
您必须运行:
git推送原点+g0834hg304gh3084gh:主
使用您先前复制的哈希,使其成为“HEAD”版本。
添加所需的本地更改。完成;)
如果您希望在删除后保留提交更改:
请注意,如果要删除的提交是最后一次提交的提交,则此解决方案有效。
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>" .
删除最近的提交,保留已完成的工作:
git reset --soft HEAD~1
删除最近的提交,销毁您已完成的工作:
git reset --hard HEAD~1
git reset HEAD^ --hard
git push origin -f
这对我有用。
使用git-restore恢复推送。
git-restore-还原一些现有提交git-restore[-edit|--no edit][-n][-m父编号][-s]<commit>。。。git revert--继续git revert—退出git revert—中止
还原相关修补程序引入的更改,并记录记录这些更改的一些新提交。这需要你的工作树是干净的(没有来自HEAD提交的修改)。
注意:git-restore用于记录一些新的提交,以反转一些早期提交的效果(通常只有一个错误的提交)。如果要丢弃工作目录中所有未提交的更改,应该看到git reset,特别是--hard选项。