我想撤消我对本地回购和Github上的回购文件所做的最后更改。 (origin
)撤消git上次提交推送
有人可以请我指向一个职位/博客做这件事。
这里是我做了提交更改的步骤:无论在我的本地回购和起源
git add -A
git commit -m "changed header"
git push origin master
我怎样才能撤消上次的变化。
我想撤消我对本地回购和Github上的回购文件所做的最后更改。 (origin
)撤消git上次提交推送
有人可以请我指向一个职位/博客做这件事。
这里是我做了提交更改的步骤:无论在我的本地回购和起源
git add -A
git commit -m "changed header"
git push origin master
我怎样才能撤消上次的变化。
做一个硬复位抛出了不好的承诺:
git reset --hard HEAD^
力推
git push -f origin master
注:reset --hard
是要扔掉的任何改变你在最近的提交中进行,除非你仍然有一个分支保持对该提交的引用。不过,前面的HEAD
仍然会在reflog中,以防短期内需要它。是非常安全的,做一个备份支路的第一:
git branch backup master
如果一切顺利的话,你可以git branch -D backup
以后。
我宁愿做git revert HEAD
,git push origin master
,除非有充分理由使用reset
。
不推荐修改已经推送的提交或远程分支的历史记录。如果你这样做,你可能会搞砸其他人的工作,或者至少使他们更难将其工作集成到远程分支(在这种情况下为origin/master
)。
一种撤消你所承诺的而不是玩origin/master
的历史的方式是通过创建一个新的提交来解除你以前所做的,然后推送新的提交。
首先,创建一个包含你过去所做的更改相反提交补丁:
git diff HEAD HEAD~1 > revert.patch
通过发布命令你告诉Git的创建描述如何得到一个补丁文件从HEAD到HEAD_1(即:到最后一次提交的前一个到最后一个提交)。
然后,您应用补丁:
git apply revert.patch
将应用这个补丁并修改你的工作副本中的文件。您现在可以删除修补程序文件(revert.patch
)。
现在您的工作副本已恢复到上次提交之前的状态,但这些更改尚未进入Git回购。您必须添加并提交它们。 (使用git gui
或git add
/git commit
或者您通常用于提交更改的任何方法)。
一旦你新的提交已经产生,只要它推
git push origin master
现在你将有
A' (master) - (origin/master)
|
B
|
A
哪里A'
是新提交您生成,包含相同的文件作为提交你想恢复到(A
)
这应该与一个关于丢失数据的大红色警告来。 –
虽然这看起来就是OP所要的。我会添加一些要清楚的。 –
@MattBall:丢失数据?我只是在这个提交中改变了一行,我想撤消。我希望该行能够恢复到以前的状态,而不会发生任何其他事情。 –