执行 git commit
后会自动调用系统编辑器来输入提交说明。
启动的编辑器是通过 Shell 的环境变量
EDITOR
指定的,一般为 vim 或 emacs。 当然也可以按照 起步 介绍的方式, 使用git config --global core.editor
命令设置你喜欢的编辑器。
编辑器会显示类似下面的文本信息(本例选用 Vim 的屏显方式展示):
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is up-to-date with 'origin/master'.
#
# Changes to be committed:
# new file: README
# modified: CONTRIBUTING.md
#
~
~
~
".git/COMMIT_EDITMSG" 9L, 283C
可以看到,默认的提交消息包含最后一次运行 git status
的输出,放在注释行里,另外开头还有一个空行,供你输入提交说明。 你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。
退出编辑器时,Git 会丢弃注释行,用你输入的提交说明生成一次提交。
除此之外,有一些参数比较常用:
-v
如果想查看更详细的内容修改提示,加入后会自动获取 git diff 的结果并显示在编辑器中-a
把未暂存而已经修改的文件也包含进来,免得手动一个一个 git add-m
不打开编辑器,而简单地在下个参数中写入提交信息
$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
2 files changed, 2 insertions(+)
create mode 100644 README
提交后它会告诉你,当前是在哪个分支(master
)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f
),以及在本次提交中,有多少文件修订过,多少行添加和删改过。
请记住,提交时记录的是放在暂存区域的快照。 任何还未暂存文件的仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。
—amend
--amend
用于你出现 “啊,忘了添加一个文件”或者 “小修补,修正笔误” 时候,不需要重新新建一个非常小的提交来修补,可以直接用新的修补后的提交来替换掉之前的提交。
当你在修补最后的提交时,与其说是修复旧提交,倒不如说是完全用一个 新的提交 替换旧的提交, 理解这一点非常重要。从效果上来说,就像是旧有的提交从未存在过一样,它并不会出现在仓库的历史中。(不过也有方法来找回)
执行后会使用上次提交的内容加上暂存区中新的内容来提交,例如你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
最终你只会有一个提交——第二次提交将代替第一次提交的结果。(最后一行也可以加上 -m <message>
来修改提交信息)