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

Fish shell如何创建支持任意数量-m参数的git commit别名

Fish Shell 实现简洁的gcom git commit 别名

不需要用string join拼接命令加eval的笨重写法,直接利用Fish原生的数组参数展开能力就能实现需求,不仅代码简洁,还天然支持特殊字符转义、-开头的选项透传,没有命令注入风险。

最终实现代码

你可以直接把下面的函数定义写到Fish配置文件中,也可以先在终端执行定义,再运行funcsave gcom永久保存到用户函数目录:

function gcom
    set -l args
    for param in $argv
        # 透传所有以-开头的git commit原生选项
        if string match -q -- '-*' $param
            set -a args $param
        # 普通文本参数自动添加-m前缀
        else
            set -a args -m $param
        end
    end
    git commit $args
end

使用说明

  • 多段提交信息直接按顺序传入即可,每个字符串会自动对应一个-m参数:
    # 简写输入
    gcom "feat: 新增用户中心" "补充头像上传逻辑" "关联迭代#456"
    
    # 实际执行的命令
    git commit -m "feat: 新增用户中心" -m "补充头像上传逻辑" -m "关联迭代#456"
    
  • 支持原样透传所有git commit原生选项,短选项、长选项都可以直接拼接使用:
    # 输入:-a 自动暂存已跟踪修改,--no-verify 跳过提交钩子
    gcom -a --no-verify "fix: 修复列表分页bug" "处理页码越界场景"
    
    # 实际执行的命令
    git commit -a --no-verify -m "fix: 修复列表分页bug" -m "处理页码越界场景"
    
  • 全程通过数组传递参数,不需要手动拼接命令字符串,提交信息里包含引号、$、反引号等特殊字符时也不会出现转义错误,相比eval实现方案更稳定安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:36:43