如何使用Git删除已推送到远程存储库的提交

时间:2012-03-16 02:57:54

标签: git github smartgit

我已经将一些提交推送到远程存储库,发现它们正在创建问题。

如何返回上一版本?也就是说,删除最近的两个提交?

3 个答案:

答案 0 :(得分:32)

由于您已将提交推送到远程存储库,因此最好的方法可能是还原两次提交,这样就不会为已经从远程存储库中提取的任何人创建任何问题。

示例使用以下提交历史记录:

e512d38 Adding taunts to management.
bd89039 Adding kill switch in case I'm fired.
da8af4d Adding performance optimizations to master loop.
db0c012 Fixing bug in the doohickey

如果您只想在不修改历史记录的情况下还原提交,则可以执行以下操作:

git revert e512d38
git revert bd89039

或者,如果您不希望其他人看到您添加了kill开关然后将其删除,则可以使用以下内容回滚存储库(但是,这会对已经从中撤消更改的其他人造成问题遥控器:

git reset --hard da8af4d
git push origin -f localBranch:remoteBranch

其中localBranch是本地分支的名称,remoteBranch是远程分支的名称。

答案 1 :(得分:5)

我认为您可以在本地回滚并推送结果:

$ git reset HEAD^ --hard
$ git push REMOTE -f

'REMOTE'是远程名称。

答案 2 :(得分:0)

首先输入此命令。

git log -n 4

此命令将显示最近4次提交的SHA。在此之后键入以下命令。

git rebase -i SHA_ID

而不是SHA_ID在提交之前键入要删除的提交的SHA。

在此之后,文件将打开,在该文件的顶部,您将看到SHA以及要删除的提交消息。删除此行并保存并退出文件。

当你这样做时,你必须推动。因此,键入以下命令。

git push -f origin master

完成此操作后,您可以看到您的提交已被删除。