我想撤消我对本地存储库和 Github 存储库上的文件所做的最后更改。( origin
)
有人可以指点我做这件事的帖子/博客。
以下是我为提交更改所做的步骤:
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
稍后。
不建议修改已推送的提交或远程分支的历史记录。如果你这样做,你可能会弄乱其他人的工作,或者至少让他们更难将他们的工作集成回远程分支(origin/master
在这种情况下)。
在不使用 's 历史的情况下撤消您提交的内容的一种方法origin/master
是创建一个新的提交来撤消您之前所做的操作,然后推送该新提交。
首先,创建一个包含与您在上次提交中所做更改相反的补丁:
git diff HEAD HEAD~1 > revert.patch
通过发出该命令,您告诉 Git 创建一个补丁文件,该文件描述如何从 HEAD 到 HEAD~1(即:从最后一次提交到上一次到最后一次提交)。
然后,您应用该补丁:
git apply revert.patch
这将应用该补丁并修改工作副本中的文件。您现在可以删除补丁文件 ( revert.patch
)。
现在您的工作副本已恢复到上次提交之前的状态,但这些更改尚未进入 Git 存储库。您必须添加并提交它们。(使用git gui
or git add
/ git commit
,或您通常用来提交更改的任何方法)。
生成新提交后,只需推送它
git push origin master
现在你将拥有
A' (master) - (origin/master)
|
B
|
A
您生成的新提交在哪里A'
,包含与您要恢复到的提交相同的文件 ( A
)
我宁愿这样做git revert HEAD
,git push origin master
除非有充分的理由使用reset
。