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

编写POSIX Shell脚本筛选指定版本分支之后的所有分支

简洁实现方案

直接利用分支命名的字典序等价于时间序的特性,用git+awk就能搞定,完全不需要数组循环,脚本如下:

#!/bin/sh

# 检查是否传入了正确的分支参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <release分支名>"
    exit 1
fi

# 把输入的release分支转换成远程分支的格式
target_branch="origin/$1"

# 筛选出所有时间晚于目标分支的远程release分支
git branch -r | grep 'origin/release/' | sed 's/^[[:space:]]*//' | awk "\$0 > \"$target_branch\""

细节说明

  1. 参数校验:防止用户不传参数或者传多参数,直接提示用法后退出
  2. 分支格式转换:输入的是release/xxx,转成远程分支的origin/release/xxx,这样能直接用字符串对比
  3. 流水线处理:
    • git branch -r:列出所有远程仓库的分支
    • grep 'origin/release/':只保留远程的release分支,过滤掉其他无关分支
    • sed 's/^[[:space:]]*//':去掉git branch -r输出里分支名前面的空格(git默认会给分支名加前缀空格对齐)
    • awk "\$0 > \"$target_branch\"":核心逻辑——因为分支名是yymmDD-HHMMSS格式,字典序和时间顺序完全一致,直接比较字符串大小就能选出所有比目标分支晚的远程release分支

示例验证

如果输入的分支是release/240216-121012,脚本会输出所有时间在它之后的远程release分支,比如:

origin/release/240321-170138
origin/release/240405-095914

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:52:49