通过 git add 命令,我们将文件的修改放入了暂存区。但这还不够,此时的修改只是“准备被记录”。为了让这些修改真正成为项目历史的一部分,我们需要执行 Git 最核心的操作——提交。
git commit 命令会将暂存区的内容永久保存到 Git 的版本库中,生成一个新的“快照”。每一个快照都是项目历史的一个节点,你可以随时回到任何一个节点查看代码。
最标准的提交方式是使用 -m 参数,后跟提交说明。这会让 Git 记录下本次变更的简短描述。
命令格式:
git commit -m "提交说明信息"
操作示例:
假设我们已经将 README.md 添加到了暂存区,现在提交它:
git commit -m "初始化项目:添加README文件"
执行成功后,终端会输出类似以下信息:
[master (root-commit) a1b2c3d] 初始化项目:添加README文件 1 file changed, 1 insertion(+) create mode 100644 README.md
这表示你成功创建了一个新的提交,提交ID是 a1b2c3d(SHA-1哈希值的简写),并修改了 1 个文件。
提交说明不仅仅是备注,它是项目的“更新日志”。一个清晰的提交说明能让你(或队友)在几个月后快速了解这次改动的原因。
好的提交说明规范:
你是否觉得每次都要先 git add 再 git commit 有点繁琐?对于已经跟踪的文件,Git 提供了一个快捷方式。
使用 -a 参数,Git 会自动将所有已跟踪文件的修改添加到暂存区并提交,省去了手动 git add 的步骤。
命令格式:
git commit -am "提交说明"
示例:
假设你修改了 index.js 和 style.css(这两个文件之前已经被提交过):
git commit -am "重构首页样式与逻辑"
注意陷阱: -a 参数不会处理新创建的文件。对于项目中的新文件,你依然必须先使用 git add 命令将其纳入跟踪。
有时候,我们刚提交完,发现漏掉了一个文件,或者提交说明里写错了字。这时不想产生一个新的提交记录,而是想修正刚刚那个提交。
使用 --amend 参数可以重写最后一次提交:
场景一:修改提交说明
git commit --amend -m "新的正确的提交说明"
场景二:漏掉了文件
# 1. 先把漏掉的文件加入暂存区
git add forgotten_file.js
# 2. 修正提交(会保留上一次的提交说明,也可修改)
git commit --amend --no-edit
警告:--amend 会改变历史记录。如果你已经将代码推送到远程服务器共享给了其他人,千万不要使用 --amend,否则会导致历史冲突。
在 Git 的设计哲学中,每一次提交都应该是一个原子单元。这意味着:
标准工作流回顾:
修改文件。 git status 查看变更。 git add <file> 暂存变更。 git commit -m "message" 提交快照。