【问题标题】:How can I force "git commit -s" using "git commit" command?如何使用“git commit”命令强制“git commit -s”?
【发布时间】:2026-02-23 04:45:01
【问题描述】:

我正在寻找一种在我提交时自动编写Signed-off-by: 标签的方法。

我尝试通过 .git/config 文件 (Reference) 进行配置。我放了这几行代码:

[alias]
    commit = commit -s

这不起作用。如下评论,你不能编辑git自己的别名(比如commit)。(Reference)

我也试过使用命令(Reference)git config --global format.signoff true

也没有效果。 This explains 为什么。

我正在寻找任何自动放置标签并允许我直接在 git 上编辑提交消息的解决方案,而无需使用系统别名。

【问题讨论】:

  • documented “为避免混淆和脚本使用麻烦,隐藏现有 Git 命令的别名将被忽略。”。您应该为别名选择一个新名称。
  • format.signoff 仅适用于补丁 (Reference)。做你想做的事,见this answer
  • @axiac 谢谢。不幸的是,我将不得不使用另一个别名。
  • @DanLowe 那answer 没意思。我希望它能够自动更改信息,例如:Signed-off-by: $ {You_ Name} $ {your_email} 也可以为其他用户工作。

标签: git-commit git-config git


【解决方案1】:

[在上次评论后进行的编辑]

我想如果我猜对了,你不能使用 git 命令的“保留”词来别名。

但是如果你这样做

[alias]
  ci = commit -s

然后它会做你想做的事。

【讨论】:

  • 我的本意是直接在git中配置,不用诉诸系统别名。
  • @EliseuEgewarth,请再次查看答案。
  • @EliseuEgewarth 只是建议这个问题可以改写为为什么 git alias 不适用于某些关键字。
  • 我的目标是找到一个可以更改命令的选项(git commitgit commit -s),但因为它已经是 answered,所以这是不可能的。我的问题的答案已经给出。谢谢。
【解决方案2】:

使用提交钩子来实现这一点
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#_committing_workflow_hooks

prepare-commit-msg

prepare-commit-msg 钩子在提交消息编辑器启动之前运行,但之后默认消息被创建。

它允许您在提交作者看到之前编辑默认消息。

这个钩子有几个参数:到目前为止保存提交消息的文件的路径、提交的类型以及提交的 SHA-1(如果这是一个修改的提交)。

这个钩子通常对正常提交没有用;相反,它适用于自动生成默认消息的提交,例如模板化提交消息、合并提交、压缩提交和修改提交。

您可以将它与提交模板结合使用,以编程方式插入信息。

【讨论】: