如何使用“git commit”命令强制执行“git commit -s”?

4
我正在寻找一种方法,在提交时自动编写Signed-off-by:标签。
我尝试通过.git/config文件进行配置(参考)。我加入了以下代码行:
[alias]
    commit = commit -s

这种方法行不通。正如下面所评论的那样,你不能编辑git自己的别名(比如commit)。(参考)

我也尝试使用命令(参考)git config --global format.signoff true

但它也没有什么效果。这篇文章解释了为什么。

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


4
根据 文档,已经记录下 "为避免脚本使用时出现混淆和问题,隐藏现有 Git 命令的别名将被忽略。" 您应该为别名选择一个新名称。 - axiac
1
format.signoff 只对补丁有影响(参考)。如果您想要实现您的需求,请查看此答案 - Dan Lowe
@axiac 谢谢。不幸的是,我将不得不使用另一个别名。 - Eliseu Egewarth
@DanLowe 那个答案并不有趣。我希望它可以自动更改信息,例如: Signed-off-by: ${Your_Name} <${your_email}> 以便其他用户也可以使用。 - Eliseu Egewarth
这个答案提供了一种自动添加签名的方法,而不需要使用别名。 - Coiby
3个回答

4

[上次评论后进行了编辑]

我想如果我猜得对的话,你不能使用Git命令中的“保留”单词来创建别名。

但是,如果你这样做:

[alias]
  ci = commit -s

然后它将执行你想要它执行的操作。

我的意图是直接在 Git 中进行配置,而不必使用系统别名。 - Eliseu Egewarth
@EliseuEgewarth,请再次审查答案。 - user5574289
@EliseuEgewarth 只是建议将问题重新表述为为什么某些关键字上的 git 别名无法正常工作。 - user5574289
我的目标是找到一个选项,可以改变命令(git commitgit commit -s),但是由于已经有了答案(https://git-scm.com/docs/git-config#git-config-alias),这是不可能的。我的问题已经得到了答案。谢谢。 - Eliseu Egewarth

2
使用提交钩子来实现这个目标
https://git-scm.com/book/zh/v2/自定义-Git-提交流程挂钩#_committing_workflow_hooks

prepare-commit-msg

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

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

此钩子需要几个参数:迄今为止保存提交消息的文件路径、提交类型以及如果这是修正提交,则为提交 SHA-1。

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

您可以与提交模板一起使用它来编写程序插入信息。


-1

你可以使用commit.gpgSign选项

你可以在仓库文件夹中发出以下命令来为每个仓库添加它:

$ git config commit.gpgSign true

或者针对您机器上的所有git存储库:

$ git config --global commit.gpgSign true

2
gpgSign与“sign-off”功能无关。“sign-off”功能是小写的“git commit -s”选项,而gpgSign是大写的“git commit -S”选项。 - Étienne
对不起,这个回答请忽略。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接