我“无意中”将一个提交推送到了GitHub上。
有没有可能删除这个提交?
我想要将我的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 reset --soft HEAD^
然后执行 git push origin +master
不能撤消提交?为什么在这种情况下我们要使用 git rebase -i HEAD^^
? - Dennisgit reset --soft
方法,效果非常好。git rebase
是一种让我感到害怕的 git 黑魔法。 - noahlzgit push -f origin HEAD^:master
那应该“撤消”推送。
为了方便回退,这里提供另一种可能性(自该提交以来的所有内容将被删除):
git reset --hard commit_hash_you_want_to_return_to
例如,如果您想将分支重置为过去的提交,如71c27777543ccfcb0376dcdd8f6777df055ef479
:git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
下一步是将您的分支修改推送到 origin
(远程仓库):git push --force
请记住,如果其他贡献者正在使用您的分支进行工作,他们可能会遇到冲突或其他问题,因为您正在更改该分支的历史记录,但仅适用于您自己,而不适用于那些已经使用您的分支的人。请注意。
使用git log
查找你要还原的提交记录
在执行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 reset HEAD^ --hard
git push origin -f
这对我起作用。
git reset B --hard
then git push origin -f
- Hilen删除最近的提交,但保留您所做的工作:
git reset --soft HEAD~1
删除最近的提交,摧毁你所做的工作:
git reset --hard HEAD~1
使用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 提交的修改)。[]
相关的内容。 - pauljohn32从远程仓库中删除提交记录:
git push -f origin last_known_good_commit:branch_name
为了从您的本地代码库中删除提交:
git reset --hard HEAD~1