自定义git行为增加commit检查
自定义git行为增加commit检查
当然,这种操作可以通过添加pre-commit
的钩子来实现,不过我采用了修改shell内容的实现方式
把这部分内容写到任何能够修改shell
行为的配置文件当中都行。
git() {
# 如果是 `git commit`,执行特殊检查
if [[ "$1" == "commit" ]]; then
force_mode=0
args=()
# 解析参数,检查是否有 --force
for arg in "$@"; do
if [[ "$arg" == "--force" ]]; then
force_mode=1
else
args+=("$arg")
fi
done
# 如果没有 --force,检查是否有未暂存的更改
if [[ "$force_mode" -eq 0 ]]; then
if git status | grep -q "Changes not staged for commit:"; then
echo "❌ 检测到未暂存的更改,请先运行 'git add' 暂存它们!"
echo "💡 或者使用 'git commit --force' 忽略此检查。"
return 1
fi
else
echo "⚠️ 强制提交,跳过未暂存更改的检查!"
fi
# 运行真正的 `git commit`
command git "${args[@]}"
else
# 对于其他所有 `git` 命令,直接执行
command git "$@"
fi
}
可以根据自己的需求来修改参数或者增加其他自定义行为。
本文作者:Gold_stein
本文链接:https://www.cnblogs.com/smartljy/p/18709810
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)