如何撤消Git中的最新本地提交?

哈姆扎·耶里卡亚(Hamza Yerlikaya)

我不小心将错误的文件提交给Git,但尚未将提交推送到服务器。

如何撤消本地存储库中的那些提交?

埃斯科·朗托拉(Esko Luontola)

撤消提交并重做

$ git commit -m "Something terribly misguided"             # (1)
$ git reset HEAD~                                          # (2)
<< edit files as necessary >>                              # (3)
$ git add ...                                              # (4)
$ git commit -c ORIG_HEAD                                  # (5)
  1. 这是您要撤消的操作。
  2. 这不会对您的工作树(磁盘上文件的状态)产生任何影响,但是会撤消提交,并使您提交的更改未进行暂存(因此,它们将在中显示为“未暂存为提交的更改”)git status,因此您需要在提交之前再次添加它们)。如果你需要添加更多的变化上一次提交,或更改提交信息1,您可以使用git reset --soft HEAD~替代,这就好比是git reset HEAD~2,但离开你现有的变化上演。
  3. 对工作树文件进行更正。
  4. git add 您想要包含在新提交中的任何内容。
  5. 提交更改,重新使用旧的提交消息。reset将旧头复制到.git/ORIG_HEAD; commit使用-c ORIG_HEAD将打开一个编辑器,该编辑器最初包含旧提交的日志消息,并允许您对其进行编辑。如果不需要编辑消息,则可以使用该-C选项。

但是要注意,如果您向索引添加了任何新的更改,则使用commit --amend会将它们添加到以前的提交中。

如果代码已经推送到您的服务器,并且您有权覆盖历史记录(变基),则:

git push origin master --force

您还可以查看以下答案:

如何将HEAD移回先前的位置?(独立的头部)和撤消提交

上面的答案将向您显示git reflog,您可以用来确定要还原到的提交的SHA-1。获得此值后,请按照上述说明使用命令序列。


1请注意,如果您只是在commit message了一个错误,则无需重置为较早的提交较简单的选项是git reset(取消对您自此以来所做的任何更改),然后选择git commit --amend,这将打开预先填充了最后一条提交消息的默认提交消息编辑器。

2 HEAD~与相同HEAD~1另外,请参阅git中的HEAD是什么?如果您要取消提交多个提交,这将很有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章