You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何防止未签名的Git提交被推送到代码仓库?

阻止推送未签名Git提交的客户端侧方案

方案1:使用Git预推送钩子(拦截推送环节)

在本地仓库的.git/hooks/目录下新建pre-push文件(不要加后缀),写入以下脚本:

#!/bin/sh

# 获取待推送的所有提交哈希
commits=$(git rev-list --objects --stdin --not --all)

# 逐个检查提交是否有GPG签名
for commit in $commits; do
  if ! git verify-commit "$commit" >/dev/null 2>&1; then
    echo "错误:提交 $commit 未做GPG签名,无法推送。"
    exit 1
  fi
done

exit 0

给脚本添加执行权限:

chmod +x .git/hooks/pre-push

这个钩子会在你执行git push前自动校验所有待推送的提交,只要有一个未签名就直接阻断推送,还会明确提示问题提交的哈希值。

方案2:强制所有提交默认签名(从源头避免)

通过Git配置强制本地提交必须签名,这样不管用GUI还是CLI创建提交,未签名的提交根本无法生成:

# 仅当前仓库生效
git config commit.gpgSign true
# 所有本地仓库都生效
git config --global commit.gpgSign true

记得先配置好你的GPG密钥:

git config user.signingkey <你的GPG密钥ID>

之后任何尝试创建未签名提交的操作都会直接报错,从根源上杜绝漏签。

方案3:双重保障(钩子+配置)

把上面两个方案结合起来:用commit.gpgSign从提交环节就拦截未签名操作,再用pre-push钩子做最后一层校验,彻底避免漏签提交被推送的情况。

内容的提问来源于stack exchange,提问作者cubuspl42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:48:13