如何从本地仓库撤消Git提交?

我不小心把错误的文件提交给了Git,但是我还没有将提交推送到服务器上。如何从本地仓库撤消这些提交?

Undo a commit and redo


$ 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状态下,这些更改将显示为“未提交的更改”,因此您需要在提交之前再次添加它们)。
    如果您只想对上一次提交添加更多的更改,或者更改提交消息1,那么可以使用git reset--soft head~,这类似于git reset head(其中head~与head~1相同),但保留现有更改的阶段。
  3. 对工作树文件进行更正。
  4. git添加任何您想要包含在新提交中的内容。
  5. 提交更改,重用旧的提交消息。reset将旧头复制到.git/orig_head;commit with-c orig_head将打开一个编辑器,该编辑器最初包含旧提交的日志消息,并允许您对其进行编辑。如果不需要编辑消息,可以使用-c选项。

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

如果代码已推送到服务器上,并且您有覆盖历史记录(重新设置)的权限,则:

git push origin master --force
Show Comments