我不小心提交了错误的文件Git,但尚未将提交推送到服务器。
我如何撤消这些提交local存储库?
撤消提交并重做
$ git commit -m "Something terribly misguided" # (0: Your Accident)
$ git reset HEAD~ # (1)
[ edit files as necessary ] # (2)
$ git add . # (3)
$ git commit -c ORIG_HEAD # (4)
-
git reset是负责的命令undo。它将撤消您的最后一次提交保持工作树(磁盘上文件的状态)不变。您需要再次添加它们,然后才能再次提交它们。
- 进行更正工作树 files.
-
git add您想要包含在新提交中的任何内容。
- 提交更改,重用旧的提交消息。
reset
将旧头复制到.git/ORIG_HEAD
; commit with -c ORIG_HEAD将打开一个编辑器,其中最初包含旧提交的日志消息并允许您对其进行编辑。如果您不需要编辑消息,您可以使用-C option.
或者,编辑先前的提交(或仅编辑其提交消息), commit --amend会将当前索引中的更改添加到先前的提交中。
删除(而不是恢复)已推送到服务器的提交,重写历史git push origin main --force[-with-lease]
是必要的。It's 几乎总是使用是个坏主意--force;更喜欢--force-with-lease相反,如中所述git 手册:
如果您[重写历史]已经发表,您应该了解重写历史的含义。
进一步阅读
您可以使用git reflog确定 SHA-1对于您想要恢复的提交。获得此值后,请使用如上所述的命令序列。
HEAD~
是相同的HEAD~1
。文章git 中的 HEAD 是什么?如果您想取消提交多个提交,这很有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)