git commit提交更新到Git存储库 (四)

使用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>]
    覆盖提交作者。使用标准的A U <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-commitcommit-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>是精准的,则标准输入被使用接收提交信息。以LFCRLF分隔内容,可以使用配置变量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>时,提交匹配给出的文件内容,而不是已经记录添加到索引中的更改。

2 导航页

git命令详细使用方式讲解及记录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值