如何撤销或者修正 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 基础 - 撤消操作