自定义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 中国大陆许可协议进行许可。

posted @   Gold_stein  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 逃离地面 RAD & 三浦透子
逃离地面 - RAD & 三浦透子
00:00 / 00:00
An audio error has occurred.

作词 : 野田洋次郎

作曲 : 野田洋次郎

空飛ぶ羽根と引き換えに 繋ぎ合う手を選んだ僕ら

それでも空に魅せられて 夢を重ねるのは罪か

夏は秋の背中を見て その顔を思い浮かべる

憧れなのか、恋なのか 叶わぬと知っていながら

重力が眠りにつく 1000年に一度の今日

太陽の死角に立ち 僕らこの星を出よう

彼が眼を覚ました時 連れ戻せない場所へ

「せーの」で大地を蹴って ここではない星へ

行こう

もう少しで運命の向こう もう少しで文明の向こう

もう少しで運命の向こう もう少しで

夢に僕らで帆を張って 来たるべき日のために夜を超え

いざ期待だけ満タンで あとはどうにかなるさと 肩を組んだ

怖くないわけない でも止まんない

ピンチの先回りしたって 僕らじゃしょうがない

僕らの恋が言う 声が言う

「行け」と言う