只有已暂存的内容才会被提交,在提交之前随时可以撤下。我们应当经常使用 git status
命令检查当前文件状态。
1 命令
git commit -m "about this commit"
仅输入提交命令 git commit
时,默认启动文本编辑器 vim 或 emacs 。文本编辑器允许更换,但可能导致提交出错,对于有格式要求的提交信息,建议在别处写好后复制到 GUI 中。
Git 中所有数据在存储前都会计算校验和,计算校验和的机制叫做 SHA-1 散列。检校和是一个由 40 个十六进制字符(0-9 和 a-f)组成字符串,基于 Git 中文件的内容或目录结构计算出来,比如每次提交所生成的 commit id 就是一个典型的检校和:
24b9da6552252987aa493b52f8696cd6d3b00373
。实际上只要前 4 个字符没有歧义,就能获得那次提交。
提交内容尽可能高内聚低耦合。严禁行首空格制表符混搭、行尾空格、行尾制表符等空白错误, 空白错误在 git gui
中会高亮预警。
提交信息越全越好。第一行作为标题,剩下的作为正文,空行分隔。
2 历史
查看提交历史的基本命令是 git log
。选项 --
能筛选出关于某某文件的提交,选项 -S
能筛选出关于某某内容的提交。 gitk
相当于 git log
的可视化版,更加直观。
git log -Sfunction_name
gitk -- file_name
一次完整的提交是一连串修订补丁的列表。除头一个外,其他修订补丁都在提交时附加 --amend
选项。
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
3 标签
Git 可以给历史中的任意一个提交打上标签。这个功能通常来标记发布节点。标签有 lightweight 和 annotated 两种,后者会记录该标签是何人何时打的,而前者不会。
$ git tag lightweight_tagname
$ git tag -a annotated_tagname 9fceb02 -m "about this tag"
$ git tag --list
4 抵消
git revert
的本质是用相反的内容抵消想要回滚的提交。
在后面的章节中,我们还会介绍其它回滚途径。