第五周_R-如何撤销Git中最近的本地提交?

97 阅读1分钟

StackOverflow 高分第二

stackoverflow.com/questions/9…

问题

无意中提交了错误的文件到 git,但是没有 push 这个提交到服务器。我该怎么从本地仓库中撤销这些提交(commits)?

如果是稍微有些开发经验的人员,或者是碰到过这个问题的人员应该都知道怎么解决,因为这是开发过程中常见的问题。

回答

撤销commit:git reset

评分第一的回答:干净利落「如果是我的话,只会说一句:git reset xx;而不会考虑如此周到细致」

$ 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)

1.git reset 命令是撤销。它将撤销你的最后一次提交,同时保留你的工作树(磁盘上的文件状态)不动。在你再次提交之前,你需要再次添加它们)。

2.对工作树文件进行修正

3.添加你想要的新东西

4.提交修改,重用旧的提交信息。reset将旧的头部复制到.git/ORIG_HEAD;用-c ORIG_HEAD提交会打开一个编辑器,最初包含旧提交的日志信息,允许你编辑它。如果你不需要编辑该信息,你可以使用-C选项。

简单来说,如果你 commit 之后,及时发现错误,使用 git reset HEAD~ 会还原为你未 commit 的状态


仅撤销 git commit message: --amend

另外,如果只是刚好需要修改 commit message。则使用 git commit --amend。会弹框提示你修改,然后保存再退出,对了,弹窗 修改/保存 时使用 vim 命令即可。


进一步阅读:使用 git log 可以指定你想要的 commit (每个 commit 对应唯一的 id)