如何阻止PhpStorm在提交信息末尾添加Signed-off-by行?
解决PhpStorm自动追加Signed-off-by提交信息的问题
从你描述的情况和给出的Git配置来看,核心问题是PhpStorm的「Sign-off commit」勾选框会强制触发Git的签名行为,哪怕你已经设置了format.signoff=false。下面给你两种解决方案,按需选择:
1. 直接关闭PhpStorm的默认签名选项
最直接的方法就是让PhpStorm不再主动触发签名行为:
- 打开PhpStorm的设置(快捷键:Windows/Linux用
Ctrl+Alt+S,Mac用Cmd+,) - 导航到 Version Control → Commit
- 在右侧的「Commit Options」区域,找到「Sign-off commit」复选框,取消勾选
- 点击「Apply」和「OK」保存设置
这样以后提交代码时,除非你手动勾选这个选项,否则PhpStorm不会自动添加Signed-off-by行。如果你完全不想碰这个选项,保持未勾选状态就好。
2. 用Git钩子彻底禁止签名行(强制生效)
如果担心自己偶尔会误勾选PhpStorm的选项,或者想让git commit --signoff命令也失效,可以用Git的commit-msg钩子自动移除签名行:
- 进入项目根目录下的
.git/hooks文件夹 - 创建一个名为
commit-msg的无后缀文件,写入以下内容:
#!/bin/sh # 自动移除提交信息中的Signed-off-by行 sed -i '/^Signed-off-by:/d' "$1"
- 给文件添加可执行权限:
chmod +x .git/hooks/commit-msg
这个钩子会在每次提交前自动清理掉提交信息里的Signed-off-by行,不管是通过PhpStorm还是命令行触发的签名操作,都能生效。
验证效果
设置完成后可以测试一下:
- 在PhpStorm里勾选「Sign-off commit」提交,查看提交记录确认没有Signed-off-by行
- 用命令行执行
git commit --signoff -m "测试提交",再用git log --oneline查看提交信息,确认签名行已被移除
这样就能彻底解决你的问题啦。
内容的提问来源于stack exchange,提问作者A.L
相关产品推荐
相关产品推荐

