跳转至

如何撤销或者修正 git commit 提交?


2018-11-13 by dongnan

问题描述

在二级子目录提交完后,发现漏掉了几个文件没有加,强迫症不想再提交一次,想要撤消刚才的提交操作。

git commit -m 'setup four 登录功能'

[master f2e4f3f] setup four 登录功能
2 files changed, 84 insertions(+)
create mode 100644 templates/index.html
create mode 100644 templates/registration/login.html

漏掉的文件

git status

位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)

修改:         ../auth/urls.py
修改:         ../db.sqlite3
修改:         ../users/views.py
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

解决方法

amend选项

git 提供一个选项 --amend,用于修改最后一次提交。

此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。

cd ../
git add auth/urls.py db.sqlite3 users/views.py
git commit --amend

两次的 commit 命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

验证日志

git log
Author: dongnan <dongnan@zongming.net>
Date:   Sat Sep 29 09:35:53 2018 +0800

setup four 登录功能

commit f36ae5ca50f8eb101e8077d3fa5899dd608d3366
Author: dongnan <dongnan@zongming.net>
Date:   Sat Sep 29 09:06:54 2018 +0800

setup three 注册功能
...省略

不过在 reflog 中仍然可以看到操作日志。

git reflog | head -n2

b62aa2f HEAD@{0}: commit (amend): setup four 登录功能
f2e4f3f HEAD@{1}: commit: setup four 登录功能

参考: Git 基础 - 撤消操作

回到页面顶部