使用git commit 将索引中的更新文件提交到Git存储库中
1 git commit 概要
git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
[--dry-run] [(-c | -C | --fixup | --squash) <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]]
[-S[<keyid>]] [--] [<pathspec>...]
创建一个新的提交,包含索引中添加的更新内容和给定的提交描述信息。默认HEAD会指向新的提交分支顶端节点。如果没有当前HEAD没有与分支关联则会显示HEAD是"detached"的。
-
[-a, --all]
这个选项可以跳过git add操作而直接将已修改和删除的文件进行提交,但是不会自动提交未跟踪的文件。 -
[-p, --patch]
同样的可以跳过git add直接进行提交,但是使用交互式的接口来选择哪一些块是需要被提交的。 -
[-C <commit>, --reuse-message=<commit>]
使用一个已存在的commit来创建本次提交信息,包含时间戳信息。 -
-c <commit>, --reedit-message=<commit>
和-C类似,不过可以启动一个编辑器来编辑本次提交信息。 -
[--fixup=<commit>]
构建一个提交信息用于后续执行rebase --autosquash命令。该命令会为提交信息添加一个"fixup! "前缀,用于后续rebase --autosquash读取。 -
[--squash=<commit>]
和--fixup=<commit>类似,添加一个"squash! "前缀,后续rebase --autosquash命令使用,可以添加-m,-c,-C,-F选项用于附加更多的提交信息。 -
[--reset-author]
当和选项-c,-C,--amend一起使用时,或者在cherry-pick冲突提交后,声明最终提交的作者现在属于提交者,这也会更新作者的时间戳。 -
[--short]
当在使用dry-run时,以短格式形式给出输出。 -
[--branch]
显示分支和跟踪信息。 -
[--porcelain]
当在使用dry-run时,给出一个简单的修改信息类似于这样的:$ git commit --dry-run --procelain -m "test" A test.c -
[--long]
当在使用dry-run时,给出较长格式的输出。 -
[-z, --null]
当显示--short或--long输出时,使用NUL字符结尾而不是LF。 -
[--author=<author>]
覆盖提交作者。使用标准的AU<author@example.com>格式。否则作者将是已存在提交中发现的第一个提交作者。 -
[--date=<date>]
覆盖在这个提交中的作者时间戳 -
[-m <msg>, --message=<msg>]
使用给定的msg作为提交信息。如果-m选型被多次给出,那么他们将会被连接成独立的段。
-m和-C,-c,-F是互斥的。 -
[-t <file>, --template=<file>]
当编辑提交信息时,启动一个编辑器,并使用给定的文件作为提交模板,不给出<file>时默认使用配置变量中comit.template给出的模板。如果用户没有编辑文本推出则提交会中止。如果使用-m或者-F时,这个选项不起作用。 -
[-s, --signoff]
在提交信息的最后添加一个Signed-off-by的提交者信息一行。 -
[-n, --no-verify]
这个选项绕过pre-commit和commit-msg的钩子,不讲述钩子相关功能,跳过介绍。 -
[--allow-empty]
通常记录一个与它的唯一父提交具有完全相同的树的提交是错误的,这个命令用于阻止这样的提交。选项绕过了安全性,主要用于外部脚本使用。 -
[--allow-empty-message]
用于可以创建带有空提交消息的提交,主要还是外部脚本使用。 -
[--cleanup=<mode>]
用于在提交信息签清理提交信息。有如下<mode>:strip
去掉头部和尾部的空行,尾部的空白,注释和折叠连续的空行。whitespace
和strip类似,但是没有去除注释。verbatim
完全不更改提交消息scissors
如果消息被编辑,类似于whitespace,不过当找到下面类似的注释将被截断。#可以自定义使用配置变量core.commentChar:# ------------------------ >8 ------------------------default
如果消息被编辑则类似于strip,否则类似于whitespace。
default可以通过配置变量commit.cleanup来改变。 -
[-e, --edit]
提交消息来自于-F文件,命令行-m,或者-C的提交对象里,这些通常是被修改的提交信息,使用此选项允许你进一步启动一个编辑器来编辑这些信息。 -
[--no-edit]
在不启动编辑器的情况下使用选定的提交信息。比如git commit --amend --no-edit则可以在修改了一个提交后不改变提交信息再次重新提交。 -
[--amend]
通过创建一个新的提交来替换当前分支顶端的提交。
当然需要注意,如果提交已经发布出去,则最好理解修改提交历史的含义。 -
[--no-post-rewrite]
绕过post-rewrite钩子。 -
[-o, --only]
用于获取指定路径上已添加到索引的更新内容,忽略其他路径已暂存的更新内容,并提交到Git存储库。 -
[--pathspec-from-file=<file>]
由<file>传入需要提交的更新内容,而不是命令行。如果<file>是精准的,则标准输入被使用接收提交信息。以LF和CRLF分隔内容,可以使用配置变量core.quotePath引用解释。 -
[--pathspec-file-nul]
仅和--pathspec-from-file=<file>一起使用,只使用NUL字符分隔,其他字符按照字面意思处理。 -
[-u[<mode>], --untracked-files[=<mode>]]
显示未跟踪的文件。
<mode>是可选的,默认是all,用于指定对未跟踪文件的处理,当不使用-u选项时,默认是normal,即显示未跟踪的文件和目录。
可能选项如下:no- 不显示未跟踪文件。normal- 显示未跟踪文件和目录。all- 还显示未跟踪目录中的单个文件。
-
[-v, --verbose]
显示更详细的文件提交后变化差异。 -
[-q, --quiet]
抑制提交信息打印 -
[--dry-run]
不创建真的提交,显示提交会发生些什么。 -
[--status]
当使用编辑器准备提交时,在提交模板中包含git status的输出,默认是开的,但是可以用于覆盖配置变量commit.status。 -
[--no-status]
和[--status]相反。 -
[-S[<keyid>], --gpg-sign[=<keyid>]]
使用GPG-sign提交。 -
[--no-gpg-sign]
当配置了配置变量commit.gpgsign会强制每个提交都被签名,此选项取消签名。 -
[--]
无作用,为了区分参数和选项 -
[<pathspec>...]
当在命令行给出<pathspec>时,提交匹配给出的文件内容,而不是已经记录添加到索引中的更改。
本文详细介绍git commit命令的各种选项和用法,包括如何提交索引中的更新文件到Git存储库,如何使用不同选项来定制提交过程等。
4381

被折叠的 条评论
为什么被折叠?



