如何修改脚本删除指定日期后的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
相关产品推荐
相关产品推荐

