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

如何修改脚本删除指定日期后的GitHub分支并保留与主分支有差异的分支

Git旧分支清理脚本优化解答

问题1:替换为特定日期的方法及格式要求

完全可以把1 week ago替换成特定日期,Git支持多种日期格式,常用的有:

  • ISO标准格式:YYYY-MM-DD(比如2023-04-21)
  • 美式日期格式:MM/DD/YYYY(比如04/21/2023)
  • 英文月份缩写格式:DD MMM YYYY(比如21 Apr 2023,月份缩写不区分大小写)

修改后的脚本片段示例:

if [ -z "$(git log -1 --before='2023-04-21' -s $k)" ]; then

这个条件的逻辑是:如果分支$k的最后一次提交早于指定日期,就判定为可删除分支。

问题2:添加忽略与develop/main有差异分支的条件

可以通过添加git diff检查来实现,只要分支与develop或main存在未合并的差异,就跳过删除操作。具体用git diff --quiet命令,该命令会根据分支间是否有差异返回不同退出码:无差异返回0,有差异返回非0。

修改后的完整脚本如下:

for k in $(git branch | sed /*/d); do
  # 跳过main和develop分支本身,避免误删核心分支
  if [ "$k" = "main" ] || [ "$k" = "develop" ]; then
    continue
  fi
  # 三个条件同时满足才删除:提交早于指定日期、与main无差异、与develop无差异
  if [ -z "$(git log -1 --before='2023-04-21' -s $k)" ] && \
     git diff --quiet $k main && \
     git diff --quiet $k develop; then
    git branch -D $k
  fi
done

说明:git diff --quiet不会输出具体差异内容,仅通过退出码判断分支间是否存在差异,避免冗余输出干扰脚本逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:20:04