如何自定义git submodule status的提交描述并为内置git describe传--exact-match参数
实现方案
git submodule status 本身没有提供透传参数给底层 git describe 的配置项或命令行开关,因此无法直接通过加参数的方式修改描述生成规则,你可以通过自定义遍历脚本的方式实现需求:
1. 直接运行自定义命令
以下单行命令可以直接输出符合要求的子模块状态,格式和原生命令基本一致:
git submodule foreach --quiet ' # 取当前子模块HEAD的完整提交哈希,要短哈希可以加--short参数 sha=$(git rev-parse HEAD) # 优先取精确匹配的标签,无匹配则返回对应分支名 desc=$(git describe --exact-match $sha 2>/dev/null || git name-rev --name-only --exclude="tags/*" $sha) # 按你需要的格式输出 echo "$sha $sm_path ($desc)" '
2. 配置Git别名简化调用
如果需要频繁使用,可以把上述命令配置为Git全局别名,之后只需敲短命令即可输出结果:
git config --global alias.submod-status '!git submodule foreach --quiet '\'' sha=$(git rev-parse HEAD) desc=$(git describe --exact-match $sha 2>/dev/null || git name-rev --name-only --exclude="tags/*" $sha) echo "$sha $sm_path ($desc)" '\'
配置完成后,直接执行 git submod-status 即可得到符合规则的输出。
内容的提问来源于stack exchange,提问作者Etienne M
相关产品推荐
相关产品推荐

