我想撤消我在本地仓库和Github上的仓库中对文件所做的最后更改。 (origin
)
有人可以指点我这样做的帖子/博客。
以下是我提交更改的步骤:
git add -A
git commit -m "changed header"
git push origin master
如何在我的本地仓库和原产地上撤消最后的更改。
答案 0 :(得分:5)
执行硬重置以抛弃错误的提交:
git reset --hard HEAD^
强制推送
git push -f origin master
注意: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 gui
或git add
/ git commit
,或您通常用于提交更改的任何方法。
生成新提交后,只需按下
即可 git push origin master
现在你有了
A' (master) - (origin/master)
|
B
|
A
A'
是您生成的新提交,其中包含与您要恢复的提交相同的文件(A
)
答案 2 :(得分:0)
除非有充分的理由使用git revert HEAD
,否则我更愿意git push origin master
,reset
。