git commit
文章目录
- 1.简介
- 2.格式
- 3.选项
- 4.示例
- 5.小结
- 参考文献
1.简介
git commit
用于将工作区或暂存区的变更提交至仓库。
每次使用 git commit 都会在本地版本库通过 SHA1 生成一个40 位的哈希值,这个哈希值也叫 commit-id。commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来任何时候通过 git reset
命令回退到指定版本。
2.格式
git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
[--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>]
[-F <file> | -m <msg>] [--reset-author] [--allow-empty]
[--allow-empty-message] [--no-verify] [-e] [--author=<author>]
[--date=<date>] [--cleanup=<mode>] [--[no-]status]
[-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
[(--trailer <token>[(=|:)<value>])…] [-S[<keyid>]]
[--] [<pathspec>…]
3.选项
以下是一些常用选项及其说明:
-m, --message=<msg>
用于直接在命令行中指定提交信息。
-a, --all
自动将所有已跟踪的文件的更改和删除添加到提交中(不包括新文件)。
-v, --verbose
在编辑器中显示更改的内容,便于查看哪些更改被提交。
--amend
修改最新的提交,允许你添加新的更改或修改提交信息。
--no-edit
在不启动编辑器的情况下使用选定的提交消息。例如与 --amend 一起使用,在不更改提交消息的情况下修改提交。
-F, --file=<file>
从给定文件中获取提交消息。使用 - 从标准输入中读取消息。
--date=<date>
手动指定提交的日期和时间。
--dry-run
显示将要提交的内容,但不实际执行提交。
-h, --help
查看帮助信息。
4.示例
(1)提交暂存区的变更到仓库并备注。
git commit -m <comment>
(2)将工作区被修改和被删除的文件,以及暂存区的变更提交至版本库并备注。必须要备注,不然无法提交。
git commit (-a | --all) -m <comment>
# 等同于
git add -u
git commit -m <comment>
注意,新加的文件(即没有被 Git 系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用 -a | --all 参数,正常的提交过程还是先使用 git add 将被改动的文件添加到暂存区,再用 git commit 提交到本地版本库。
(3)修改最近一次提交的消息。
git commit --amend
上面的命令会打开编辑器以修改最近一次提交的消息。
修改完成后会生成一个新的提交对象,从而导致新的 commit id。这是因为 Git 将新的提交消息创建为一个新的提交对象,而不是修改原始的提交对象。
需要注意的是,使用 git commit --amend
命令修改提交消息时,只能修改最近的一次提交。如果需要修改更早的提交消息,可以使用 git rebase -i
命令来进行交互式重写历史。
(4)修改最近的一次提交的信息。
git commit --amend -m <new message>
这将替换掉最近一次提交的 message。如果你已经将这次提交推送到远程仓库,修改后需要强制推送:
git push --force
使用 --amend 参数,一般出于两种考虑:
- 最近一次提交有 bug 需要修复,但又不想保留最近一次的提交记录。
- 减少提交记录的数量,保持提交记录的干净整洁。
(5) 查看帮助。
commit 还有许多参数有其他效果,一般来说了解上述操作足以应对日常开发。
git commit -h | --help
5.小结
git commit 是 Git 中一个非常重要的命令,用于将已暂存的更改(staged changes)记录到版本历史中。
通过使用 git commit,开发者可以创建一个快照,保存代码的当前状态,并附上描述性的信息,以便将来追踪和理解代码更改的理由。
参考文献
Git - git-commit Documentation