Git Commit 介绍
git commit
命令用于将工作区或暂存区的更改提交到版本库,形成可追踪的历史记录点。
它是 Git 工作流的核心操作,常用来保存代码的进展或完成阶段性开发。
基本用法
# 将暂存区内容提交到版本库,进入编辑器填写提交信息
git commit
# 将特定文件提交到版本库(需已被跟踪)
git commit [file1] [file2] [...]
# 将暂存区内容提交到版本库,同时直接添加提交信息(无需打开编辑器)
git commit -m "<message>"
# 跳过 git add,将所有已跟踪文件的更改提交到版本库
git commit -am "<message>"
# 替代上一次提交:
# - 若代码无更改,用于修改提交信息
# - 若代码有更改,将其合并到上一次提交
git commit --amend -m "<message>"
常用选项
参数 | 说明 |
---|---|
-m <message> | 指定提交信息,避免打开编辑器 |
-a | 提交所有已修改或删除的文件(限已被 Git 跟踪的文件) |
--amend | 修改最近一次提交(包括内容或提交信息) |
--no-edit | 不修改提交信息,直接沿用上次的提交消息 |
修改历史提交
修改最近一次提交
如果需要修改最近一次提交的内容或提交信息:
- 编辑文件,完成更改后添加到暂存区:
git add <file-name>
- 使用
--amend
更新提交:git commit --amend
修改更早的提交
通过交互式变基(git rebase -i
)修改历史提交:
启动交互式变基
例如,修改最近 3 次提交:git rebase -i HEAD~3
编辑器中显示提交历史:
pick 1234567 feat: 添加新功能 pick 89abcde fix: 修复启动问题 pick def7890 docs: 更新文档
将需要修改的提交改为
edit
:pick 1234567 feat: 添加新功能 edit 89abcde fix: 修复启动问题 pick def7890 docs: 更新文档
保存并退出。
修改文件并更新提交:
git add <file-name> git commit --amend
完成修改后继续变基:
git rebase --continue
最佳实践
编写清晰的提交信息
遵循 Conventional Commits 格式:( ): <空行> <空行> 空行>空行> 示例:
feat(app): 添加用户登录功能 实现用户登录和身份验证。解决了之前登录状态丢失的问题。 Closes #123
保持提交单一职责
每次提交只包含一种逻辑更改(例如,修复一个 bug 或实现一个功能),避免混合提交。修改已推送提交时的注意事项
- 若已推送到远程分支,需使用
git push --force
强制覆盖。 - 与团队协作时应谨慎,确保其他人未基于该提交工作。
- 若已推送到远程分支,需使用
总结
git commit
是 Git 的核心命令,通过合适的参数选项可以更高效地管理提交。- 选择适合的用法(如
--amend
或rebase
)来优化历史提交,同时注意团队协作中的代码一致性。