撤消git last commit push

时间:2013-07-03 17:36:13

标签: git github commit

我想撤消我在本地仓库和Github上的仓库中对文件所做的最后更改。 (origin

有人可以指点我这样做的帖子/博客。

以下是我提交更改的步骤:

git add -A
git commit -m "changed header"
git push origin master

如何在我的本地仓库和原产地上撤消最后的更改。

3 个答案:

答案 0 :(得分:5)

  1. 执行硬重置以抛弃错误的提交:

    git reset --hard HEAD^
    
  2. 强制推送

    git push -f origin master
    
  3. 注意:reset --hard将丢弃您在最近提交中所做的任何更改,除非您仍然在某个地方维护对该提交的引用。之前的HEAD仍将在reflog中,以防您在短期内需要它。为了非常安全,首先建立备份分支:

    git branch backup master
    

    如果一切顺利,您可以稍后git branch -D backup

答案 1 :(得分:1)

不建议修改已推送的提交或远程分支的历史记录。如果你这样做,你可能会搞乱其他人的工作,或者至少使他们更难将他们的工作集成到远程分支(在这种情况下为origin/master)。

在不使用origin/master历史记录的情况下撤消您所提​​交内容的方法是创建一个新的提交,撤消您之前所做的操作,然后推送该新提交。

首先,创建一个包含与您在上次提交中所做更改相反的修补程序:

git diff HEAD HEAD~1 > revert.patch

通过发出该命令,您告诉Git创建一个补丁文件,该文件描述了如何从HEAD获取HEAD~1(即:从上一次提交到上一次到最后一次提交)。

然后,您应用该补丁:

git apply revert.patch

这将应用该修补程序并修改工作副本中的文件。您现在可以删除补丁文件(revert.patch)。

现在您的工作副本将恢复到上次提交之前的状态,但这些更改尚未进入Git存储库。您必须添加并提交它们。 (使用git guigit add / git commit,或您通常用于提交更改的任何方法。

生成新提交后,只需按下

即可

git push origin master

现在你有了

A'  (master) - (origin/master)
|
B
|
A

A'是您生成的新提交,其中包含与您要恢复的提交相同的文件(A

答案 2 :(得分:0)

除非有充分的理由使用git revert HEAD,否则我更愿意git push origin masterreset