下面这个shell清理23年及之前的分支,在清理之前将分支显示在"branch_dates.txt"文件中
#!/bin/bashecho"开始获取远程分支的创建时间信息..."# 获取所有远程分支branches=$(gitbranch -r|grep-v HEAD|sed's/origin\///')# 临时文件存储分支信息temp_file="branch_dates.txt">$temp_file# 获取每个分支的最后提交时间echo"正在分析分支创建时间..."forbranchin$branches;doif[["$branch"=="master"]];thencontinue# 跳过master分支fi# 获取分支的最后提交时间last_commit_date=$(gitlog --pretty=format:"%ci"origin/$branch -12>/dev/null)if[[-n"$last_commit_date"]];then# 提取日期部分 (YYYY-MM-DD)commit_date=$(echo$last_commit_date|cut-d' '-f1)echo"$branch:$commit_date">>$temp_filefidone# 显示2023年及之前的分支echo-e"\n=== 2023年及之前的分支 ==="cutoff_date="2023-12-31"old_branches=()whileIFS=:read-r branchdate;doif[["$date"<"$cutoff_date"]]||[["$date"=="$cutoff_date"]];thenecho"$branch(最后提交:$date)"old_branches+=("$branch")fidone<$temp_fileecho-e"\n共找到${#old_branches[@]}个2023年及之前的分支"# 询问是否删除echo-e"\n是否要删除这些分支? (yes/no)"read-r responseif[["$response"=="yes"]];thenecho"开始删除旧分支..."forbranchin"${old_branches[@]}";doecho"删除分支:$branch"gitpush origin --delete"$branch"2>/dev/nullif[[$?-eq0]];thenecho"✓ 成功删除:$branch"elseecho"✗ 删除失败:$branch"fidoneecho"删除完成!"elseecho"取消删除操作"fi# 清理临时文件rm-f$temp_file