¥
立即购买

项目分支清理流程生成器

42 浏览
2 试用
0 购买
Dec 13, 2025更新

本提示词专为版本控制场景设计,能够根据项目特定事件自动生成标准化的分支清理流程。通过结构化的工作流程和专业技术规范,确保清理操作的安全性与可追溯性。输出内容包含风险评估、操作步骤和验证机制,适用于发布完成、功能合并等关键里程碑后的分支管理需求,帮助团队维护代码库的整洁与稳定性。

零售云结算服务 — 版本发布完成后的分支清理技术流程

适用范围:远端与本地 Git 仓库;目标分支类型为 feature/(特性分支)与 release/(发布分支)。流程基于通行的 Git 分支管理规范(GitHub/GitLab/Bitbucket 等均适用),保证所有操作可逆、可验证、可审计。


1. 清理概述(目标分支数量、预计影响范围)

  • 触发事件:版本发布完成(已完成发布构建与上线核验)
  • 清理目标:
    • 特性分支 feature/*:已合并入主线且无后续依赖的分支
    • 发布分支 release/*:对应版本已被正式打标签(tag)并完成回合并验证的分支
  • 预计影响范围:
    • 远端与本地分支列表将减少,代码历史通过已合并提交和归档标签保留
    • 不影响已发布版本、主干分支构建与已生成制品
    • CI/CD 触发源若绑定被删除的分支,需确认已迁移或停用
  • 目标数量统计(执行前评估,示例指令):
    • 默认分支名以 main 为例;若团队使用 develop 作为集成主线,请将 DEFAULT_BRANCH 调整为 develop
    # 参数
    DEFAULT_BRANCH=main
    REMOTE=origin
    
    git fetch --all --prune --tags
    
    # 候选特性分支(已合并入默认分支)
    git branch -r --merged $REMOTE/$DEFAULT_BRANCH --list "$REMOTE/feature/*" | wc -l
    
    # 候选发布分支(已合并入默认分支)
    git branch -r --merged $REMOTE/$DEFAULT_BRANCH --list "$REMOTE/release/*" | wc -l
    

2. 预处理检查清单(合并状态验证、依赖关系检测)

  • 仓库与权限检查

    • 确认远端名(默认 origin)、默认分支名(main 或 develop)
    • 确认具备删除远端分支与推送标签的权限
    • 检查分支保护策略,避免对受保护分支执行删除(仅清理 feature/、release/
    • 工作区干净:git status 无未提交/未暂存修改
  • 发布完整性与一致性

    • 发布标签存在且不可变(annotated tag),示例:git show <RELEASE_TAG>
    • 发布分支已合并入默认分支(以及其他需回合并的集成分支,如存在)
      • 验证:git branch -r --merged origin/main --list "origin/release/*"
    • 当前无正在该发布分支上进行的热修复/回滚操作
    • 该版本的构建产物、发布说明、变更日志已归档
  • 特性分支合并状态

    • 分支合并验证(任选其一)
      • 列表法:git branch -r --merged origin/$DEFAULT_BRANCH --list "origin/feature/*"
      • 单分支核验:git merge-base --is-ancestor <feature-tip> origin/$DEFAULT_BRANCH 返回 0 表示已合并
      • 差异法:git cherry -v origin/$DEFAULT_BRANCH <feature-branch> 无输出表示已合并
    • 分支无未合并 PR、无必需后续版本的依赖(如后续版本需要从该分支 backport)
    • 近 N 日(常见做法为 14–30 天)未更新的非合并分支不纳入本次清理(避免误删进行中工作)
  • 依赖关系与外部引用

    • CI/CD 任务未绑定将删除的分支(触发器、计划任务、环境规则)
    • 外部引用(文档链接、环境配置、Webhook)未指向将删除的分支
    • 子模块/子仓库未依赖该分支的特定引用
  • 审批与记录

    • 生成候选清单(CSV/MD),由对应代码所有者/模块负责人确认
    • 记录清理计划与回滚点(对应标签与提交哈希)

3. 分步骤操作指令(具体命令和参数说明)

说明:

  • 以下步骤以 DEFAULT_BRANCH=main、REMOTE=origin 为例。根据团队规范调整。
  • 本流程不使用任何强制删除命令;远端删除使用标准 git push <remote> --delete <branch>
  • 为确保可逆,所有删除前均创建归档标签(annotated tag)。

步骤 0:参数设置与同步

DEFAULT_BRANCH=main
REMOTE=origin
ARCHIVE_TAG_PREFIX=archive/$(date +%Y%m%d)  # 归档标签前缀(含日期)
git fetch --all --prune --tags
git checkout $DEFAULT_BRANCH
git pull $REMOTE $DEFAULT_BRANCH

步骤 1:生成待清理分支清单(审阅用)

# 待清理特性分支(已合并默认分支)
git branch -r --merged $REMOTE/$DEFAULT_BRANCH --list "$REMOTE/feature/*" \
  | sed "s# *$REMOTE/##" | sort | tee /tmp/feature_to_clean.txt

# 待清理发布分支(已合并默认分支)
git branch -r --merged $REMOTE/$DEFAULT_BRANCH --list "$REMOTE/release/*" \
  | sed "s# *$REMOTE/##" | sort | tee /tmp/release_to_clean.txt
  • 对上述两个清单进行人工审阅与审批:
    • 剔除存在未关闭 PR、被 CI/CD 任务引用、或有后续 backport 需求的分支
    • 对发布分支,核验其对应发布标签存在且指向该版本提交:git tag --points-at $(git rev-parse origin/<release-branch>)

步骤 2:为每个待删除分支创建归档标签(确保可逆)

  • 对特性分支:
while read BR; do
  TIP=$(git rev-parse $REMOTE/$BR)
  SAFE_TAG_NAME=$(echo "$BR" | tr '/' '_' ) # 标签不建议与分支同名,避免混淆
  git tag -a "$ARCHIVE_TAG_PREFIX-feature-$SAFE_TAG_NAME" $TIP -m "Archive feature $BR before deletion"
done < /tmp/feature_to_clean.txt

git push --tags
  • 对发布分支:
while read BR; do
  TIP=$(git rev-parse $REMOTE/$BR)
  SAFE_TAG_NAME=$(echo "$BR" | tr '/' '_' )
  # 若已有正式发布标签(例如 vX.Y.Z),此处仍创建归档标签以保留删除前分支尖端的可追溯性
  git tag -a "$ARCHIVE_TAG_PREFIX-release-$SAFE_TAG_NAME" $TIP -m "Archive release branch $BR before deletion"
done < /tmp/release_to_clean.txt

git push --tags

说明:

  • 采用 annotated tag(带消息与作者信息),便于审计
  • 归档标签命名包含日期、类型与原分支名,避免冲突并利于检索

步骤 3:删除远端分支(先小批量再全量)

  • 建议先以 1–3 条分支进行小批量验证(减少误删风险):
# 示例:删除一个特性分支与一个发布分支(请替换为清单中的实际分支名)
git push $REMOTE --delete feature/xxx
git push $REMOTE --delete release/1.2.3
  • 批量删除(在完成小批验证且通过审批后执行):
# 批量删除特性分支(逐行执行,便于中途停止)
while read BR; do
  git push $REMOTE --delete "$BR"
done < /tmp/feature_to_clean.txt

# 批量删除发布分支
while read BR; do
  git push $REMOTE --delete "$BR"
done < /tmp/release_to_clean.txt

步骤 4:清理本地与远端跟踪引用

git fetch --all --prune
git remote prune $REMOTE

# 可选:删除本地同名分支与跟踪分支(需先切换回默认分支)
git checkout $DEFAULT_BRANCH

# 安全删除本地分支(仅在确认已合并时,-d 会阻止删除未合并分支)
while read BR; do
  LOCAL_BR=${BR#*/}               # 去掉前缀(如 origin/feature/x -> feature/x)
  git branch -d "$LOCAL_BR" 2>/dev/null || true
  git branch -dr "$REMOTE/$LOCAL_BR" 2>/dev/null || true
done < <(cat /tmp/feature_to_clean.txt; cat /tmp/release_to_clean.txt)

步骤 5:记录与公告

  • 生成清理报告(时间、操作者、分支列表、对应归档标签、相关发布标签)并归档到项目知识库
  • 通知相关干系人(开发、测试、运维、CI 管理)以更新可能的引用

4. 验证方案(成功标准和异常处理)

成功标准

  • 远端验证:
    • 被标记删除的分支不再存在于远端:
      # 应无输出
      comm -12 <(git ls-remote --heads $REMOTE | awk '{print $2}' | sed 's#refs/heads/##' | sort) \
               <(cat /tmp/feature_to_clean.txt /tmp/release_to_clean.txt | sort)
      
    • 归档标签存在且可解析到原分支 tip:
      git show $ARCHIVE_TAG_PREFIX-feature-* >/dev/null
      git show $ARCHIVE_TAG_PREFIX-release-* >/dev/null
      
  • 历史可达性:
    • 删除前的分支尖端提交由归档标签或发布标签可达:
      # 示例:验证某个归档标签是否指向先前的 tip
      git cat-file -t $ARCHIVE_TAG_PREFIX-feature-*
      
  • 主线完整性:
    • 默认分支构建/测试通过,发布标签未变更
    • 无因分支删除导致的 CI 任务失败或外部引用报错

异常处理

  • 拒绝删除(受保护分支或权限不足):
    • 调整保护策略前重新评估必要性;或将该分支保留至下个清理窗口
  • 发现未合并改动:
    • 立即停止清理,恢复分支(见回滚),评估是否需要补充合并或保留
  • 标签冲突(同名标签已存在):
    • 更换归档标签名(追加时间戳或序号)后重试
  • CI 失败或外部引用异常:
    • 更新 CI 配置或外部引用指向,重新触发验证后继续

回滚方案(可逆保障)

  • 通过归档标签恢复被删除分支:
    # 恢复特性分支示例
    git checkout -b feature/xxx $ARCHIVE_TAG_PREFIX-feature-feature_xxx
    git push $REMOTE feature/xxx
    
  • 若需恢复发布分支:
    git checkout -b release/1.2.3 $ARCHIVE_TAG_PREFIX-release-release_1.2.3
    git push $REMOTE release/1.2.3
    
  • 恢复后通知相关方并重新评估清理窗口

5. 注意事项(风险提示和最佳实践建议)

  • 风险控制

    • 避免删除仍存在开放 PR 或被 CI/CD、环境配置直接引用的分支
    • 避免删除尚需 backport 的来源分支或存在合规审计需求的分支
    • 在低业务高峰时段执行,保留操作窗口与回滚通道
    • 删除动作前后保留操作记录(分支列表、提交哈希、标签名、操作者与时间)
  • 最佳实践(基于行业通行做法)

    • 使用明确的命名规范:feature/、release/、hotfix/*,并对默认分支(main 或 develop)开启保护
    • 发布时使用 annotated tag 固定可交付版本点,发布分支完成回合并后尽快清理
    • 为删除前的分支尖端建立归档标签,确保任何时间点可恢复
    • 设定清理节奏(如每次发布后或每月固定窗口),并纳入团队协作流程与审批
  • 命令安全

    • 不使用强制删除命令(例如 git branch -D)
    • 远端删除使用标准命令:git push <remote> --delete <branch>
    • 本地删除仅在确认已合并时使用 git branch -d <branch>,由 Git 进行安全校验

以上流程可直接用于“零售云结算服务”在“版本发布完成”后的特性分支与发布分支清理,确保历史留痕、可逆可查,并与常用 Git 托管平台的规范一致。

分支清理技术流程(项目:智能家居网关)

1. 清理概述

  • 清理触发事件:功能合并完成
  • 清理范围:特性分支、实验性分支
  • 目标分支数量:通过预处理命令自动统计(见预处理检查与步骤),按命名约定与合并状态筛选后确定
  • 预计影响范围:
    • 代码仓库分支命名空间(feature/、feat/、experiment/、exp/ 等)
    • 关联的未关闭合并请求(PR/MR)
    • 引用分支名称的CI/CD配置、部署环境脚本、文档链接
    • 开发者本地跟踪分支与远程跟踪引用

说明:整个流程以“验证已集成且可回滚”为原则,执行前创建归档标记(tag),禁用强制删除,确保全程可逆。


2. 预处理检查清单

  • 仓库同步与健康检查
    • 已执行 git fetch --all --prune,同步远程最新状态
    • 基线分支存在且最新(如 develop、main)
  • 合并状态验证(功能已集成)
    • 祖先关系验证:确认候选分支为基线分支的祖先(fast-forward/rebase合并场景)
    • 内容等价验证:确认候选分支相对基线无有效差异(squash 合并场景)
  • 依赖关系检测
    • 无未关闭/未合并的PR/MR指向候选分支
    • CI/CD、部署配置、环境变量、脚本中不存在对候选分支名的显式依赖
    • 无其他长期分支或子模块将候选分支作为上游
  • 风险评估
    • 候选分支最近提交时间已超过团队定义的缓冲期(如≥48小时,无新提交)
    • 分支未被设置为受保护分支(Remote保护策略可能阻止删除)
    • 候选分支无活跃里程碑/发布标记引用
  • 回滚保障
    • 为每个待删分支创建唯一的归档标签(annotated tag),包含原HEAD提交与时间戳
    • 记录清单(分支名、HEAD SHA、归档tag、对应PR/MR、责任人/工单)

3. 分步骤操作指令

说明:

  • 以下命令基于 Git 标准命令。删除操作均使用安全模式(本地 -d,远程 --delete),不使用强制删除。
  • 将 TARGET_BASE 设置为功能最终合入的基线分支(示例给出 develop 和 main 双基线检测,择其一满足即可)。

步骤 0:环境准备

  • 确认在主仓库根目录执行,Git 版本满足 2.20+。
  • 建议在只读/只删除最小权限账户下执行远程删除(遵循最小权限原则)。

步骤 1:同步远程与定义变量

git fetch --all --prune

# 可能的基线(按项目实际确定):
BASE_CANDIDATES=("develop" "main")

# 归档标签命名前缀(可按团队规范调整)
ARCHIVE_PREFIX="archive/branch"
# 日期戳
TS=$(date +%Y%m%d)

步骤 2:枚举候选分支(特性/实验性)

# 根据常见命名约定收集远程候选
git branch -r --list \
  "origin/feature/*" \
  "origin/feat/*" \
  "origin/experiment/*" \
  "origin/exp/*" > .candidates.txt

说明:若无统一命名,可结合组件目录、团队规则调整通配符;最终以内容校验为准。

步骤 3:基线存在性检查

> .bases.txt
for b in "${BASE_CANDIDATES[@]}"; do
  if git show-ref --verify --quiet "refs/remotes/origin/$b"; then
    echo "origin/$b" >> .bases.txt
  fi
done

# 至少应存在一个基线
test -s .bases.txt

步骤 4:合并状态与内容等价验证(自动筛选可删清单)

> .deletable.txt
> .needs_review.txt

while read -r rb; do
  # 远程分支短名,如 origin/feature/x -> feature/x
  short="${rb#origin/}"

  # 跳过无效引用
  git show-ref --verify --quiet "refs/remotes/$rb" || continue

  integrated=0
  while read -r base; do
    # 方式A:祖先关系(适用于FF/rebase合并)
    if git merge-base --is-ancestor "refs/remotes/$rb" "$base"; then
      integrated=1
      break
    fi
    # 方式B:内容等价(适用于squash合并)
    # 无差异则认为功能已集成
    if git diff --quiet "$base...refs/remotes/$rb"; then
      integrated=1
      break
    fi
  done < .bases.txt

  if [ $integrated -eq 1 ]; then
    echo "$rb" >> .deletable.txt
  else
    echo "$rb" >> .needs_review.txt
  fi
done < .candidates.txt

说明:

  • .deletable.txt 为“已确认集成、可删除”列表。
  • .needs_review.txt 为“存在差异或无法确认”的分支,需人工复核对应PR/MR与需求状态。

步骤 5:依赖与PR状态人工复核(必选)

  • 对 .deletable.txt 中的每个分支:
    • 确认无打开的 PR/MR 指向该分支,且相关PR状态为已合并/已关闭。
    • 检查CI/CD、部署脚本、环境变量、文档等是否引用该分支名。
    • 若有依赖,移除依赖或将该分支移入 .needs_review.txt 暂缓处理。

步骤 6:为每个可删分支创建归档标签(可回滚保障)

while read -r rb; do
  short="${rb#origin/}"
  head_sha=$(git rev-parse "refs/remotes/$rb")

  # 创建带注解的归档标签,包含分支、来源、时间戳
  tag="${ARCHIVE_PREFIX}/${short//\//_}-$TS"
  git tag -a "$tag" "$head_sha" -m "Archive before deletion: $short at $head_sha on $TS (project: smart-home-gateway)"

  # 推送单个归档标签
  git push origin "refs/tags/$tag"
done < .deletable.txt

步骤 7:删除远程分支(安全删除)

while read -r rb; do
  short="${rb#origin/}"

  # 远程删除(非强制)。若远程保护启用,平台将拒绝,需按变更流程解除保护后再执行。
  git push origin --delete "$short"
done < .deletable.txt

步骤 8:清理本地与远程跟踪引用

# 清理已失效的远程跟踪引用
git fetch --prune
git remote prune origin

# 可选:删除本地对应分支(若存在且已合并)
# 注:-d 为安全删除,未合并将被拒绝;不使用 -D。
while read -r rb; do
  short="${rb#origin/}"
  if git show-ref --verify --quiet "refs/heads/$short"; then
    git branch -d "$short" || true
  fi
done < .deletable.txt

步骤 9:产出统计与记录

echo "Candidates: $(wc -l < .candidates.txt)"
echo "Deletable:  $(wc -l < .deletable.txt)"
echo "Review:     $(wc -l < .needs_review.txt)"
  • 记录项(建议写入变更单/仓库维护日志):
    • 分支名、原HEAD SHA、归档tag名、对应PR/MR链接、删除人、删除时间、审核人

4. 验证方案

成功标准

  • 远程验证
    • 对每个已删分支:git ls-remote --heads origin "<branch_name>" 返回空
    • 归档tag存在:git ls-remote --tags origin "<ARCHIVE_PREFIX>/*" 可检索到对应标签
  • 集成验证
    • 使用与步骤4相同的内容等价校验,对应基线分支与被删分支 tip 的三点差异检查无差异:
      • git diff --quiet origin/...<archived_sha> 结果为无差异
  • CI/CD与部署
    • 主干(develop/main)流水线运行成功
    • 关键环境不出现因分支缺失导致的构建/部署失败
  • 本地与远程引用清理
    • git fetch --prune 后无“gone”分支残留
    • git branch -r 不再显示已删除的远程分支

异常处理

  • 远程删除被保护阻塞
    • 按平台合规流程取消该分支的保护或通过变更审批后再执行步骤7
  • 内容不等价或存在差异
    • 将分支加入 .needs_review.txt,保留分支;由开发确认差异是否应保留或合并修复后再清理
  • 误删或需恢复
    • 通过归档标签恢复:
      • git checkout -b <branch_name> <archive_tag>
      • git push -u origin <branch_name>
  • 本地分支删除被拒绝
    • 保留本地分支,避免使用强制删除;待后续合并完成或人工确认后再删除

5. 注意事项(风险提示与最佳实践)

  • 严禁使用强制删除命令(如 git branch -D、强推删除)。本流程仅使用安全删除选项。
  • 使用归档标签进行快照保留,确保可逆;避免使用普通归档分支污染分支命名空间。
  • 对采用 squash 合并的团队,必须以“内容等价”作为集成判断依据,不能仅依赖祖先关系。
  • 在删除前完成PR/MR、CI/CD、部署脚本、环境变量的依赖核查,防止因分支名引用导致流程失败。
  • 删除操作应具备审核与记录(变更单/维护日志),包含分支、SHA、tag、责任人、时间与关联工作项。
  • 建议在低峰时段执行,并在执行后立即进行流水线与关键环境的健康检查。
  • 多仓库/子模块场景需检查子模块引用的 commit 与分支不受影响;若有子模块引用分支名,先调整为固定 commit 再清理。
  • 若团队采用受保护分支策略,应通过合规流程临时调整策略后再删除,避免权限绕过。

以上流程严格遵循Git常见工作流与安全删除原则,确保特性分支、实验性分支在“功能合并完成”后进行可控、可回滚的清理。

支付风控服务 分支清理技术流程(触发事件:热修复验证通过)

适用范围:Git 仓库;分支类型 hotfix/(修复分支)、release/(发布分支);主干分支 main,集成分支 develop(如不同,请按实际替换变量)。

变量建议:

  • MAIN=main
  • DEV=develop
  • REMOTE=origin
  • HOTFIX_NS=hotfix/
  • RELEASE_NS=release/
  • TAG_PREFIX=archive/$(date +%Y%m%d) 例如:archive/20251212

1. 清理概述(目标分支数量、预计影响范围)

  • 清理对象
    • 修复分支:所有已完成热修复、且已完成主干与集成链路合并的 hotfix/* 分支
    • 发布分支:所有已完成生产发布、已打版本标签、且已合并回主干与集成分支的 release/* 分支
  • 触发事件
    • 最近一次热修复已完成验证(含生产验证或回归验证,依团队定义)
  • 预计影响范围
    • 远程仓库引用(REMOTE)
    • CI/CD 分支触发规则(基于分支模式的流水线)
    • 分支保护策略(保护的 release 分支需先解除保护,否则无法删除)
    • 相关研发/运维同事使用的临时环境(若由分支触发/绑定)
  • 目标分支数量(执行预处理检查后填写)
    • 待清理修复分支数量:<待填>
    • 待清理发布分支数量:<待填>
  • 变更窗口与通知
    • 建议在非高峰时段执行,提前通知项目干系人,并在清理前公示候选分支清单至少1个工作日

2. 预处理检查清单(合并状态验证、依赖关系检测)

请在只读模式下完成所有检查,任何删除操作不得在通过全部检查前执行。

  • 基础同步
    • git fetch --all --prune
    • 确认 MAIN 与 DEV 存在:git show-ref --verify refs/remotes/$REMOTE/$MAIN 和 refs/remotes/$REMOTE/$DEV(若 DEV 不存在,则相应检查只验证 MAIN)
  • 命名与保护策略
    • 确认修复分支命名为 hotfix/,发布分支命名为 release/
    • 检查是否存在仓库保护策略阻止删除(在代码托管平台查看分支保护规则)
  • 合并状态(必须满足)
    • 修复分支:
      • 分支 tip 提交为 MAIN 的祖先:git merge-base --is-ancestor $REMOTE/ $REMOTE/$MAIN
      • 如存在 DEV:分支 tip 提交为 DEV 的祖先:git merge-base --is-ancestor $REMOTE/ $REMOTE/$DEV
      • 如热修复期间存在活动发布分支(release/*):需确保已同步至对应发布分支或该发布分支已完成并合并回主干
    • 发布分支:
      • 分支 tip 提交为 MAIN 的祖先:git merge-base --is-ancestor $REMOTE/ $REMOTE/$MAIN
      • 如存在 DEV:分支 tip 提交为 DEV 的祖先:git merge-base --is-ancestor $REMOTE/ $REMOTE/$DEV
      • 与该发布对应的版本标签(例如 vX.Y.Z)已存在且为带注释(annotated)标签,并可从 MAIN 追溯:git show vX.Y.Z
  • 未合并提交检测(任一有输出即为风险)
    • 修复分支对 MAIN:git log --oneline $REMOTE/ --not $REMOTE/$MAIN
    • 修复分支对 DEV:git log --oneline $REMOTE/ --not $REMOTE/$DEV
    • 发布分支对 MAIN/DEV 同上
  • PR/变更单状态
    • 确认与候选分支关联的 PR 均已合并或关闭且无阻塞审批(在托管平台检查)
  • CI/CD 状态
    • 与候选分支相关的流水线无在途运行/卡顿;切换或关闭基于分支模式的计划任务
  • 生产发布与回滚点
    • 对应版本已在生产验证通过
    • 对应版本的发布标签已打并推送(annotated tag)
  • 候选清单生成(只读)
    • 修复分支候选(已合并至 MAIN,如存在 DEV 亦需合并至 DEV)
      • git branch -r --merged $REMOTE/$MAIN | grep "$REMOTE/$HOTFIX_NS" | sed "s|$REMOTE/||" > hotfix_merged_to_main.txt
      • 如存在 DEV:对 hotfix_merged_to_main.txt 内每个分支再逐一用 git merge-base --is-ancestor 验证 DEV
    • 发布分支候选(已合并至 MAIN 与 DEV,且有对应版本标签)
      • git branch -r --merged $REMOTE/$MAIN | grep "$REMOTE/$RELEASE_NS" | sed "s|$REMOTE/||" > release_merged_to_main.txt
      • 如存在 DEV:同样使用 git merge-base --is-ancestor 验证 DEV
      • 对每个发布候选,核对对应版本标签存在且为 annotated 标签

若任何检查未通过:暂停清理,补齐合并/标签/验证,或将分支移出候选清单。


3. 分步骤操作指令(具体命令和参数说明)

说明:

  • 以下命令均为“安全删除”路径,不包含强制删除;请根据仓库实际分支名调整变量。
  • 在执行删除前,为每条分支创建可追溯的安全备份标签,确保可逆。

步骤 0:设置变量并同步

  • export REMOTE=origin
  • export MAIN=main
  • export DEV=develop
  • export HOTFIX_NS='hotfix/'
  • export RELEASE_NS='release/'
  • export TAG_PREFIX="archive/$(date +%Y%m%d)"
  • git fetch --all --prune

步骤 1:确认最终待清理清单(人工复核)

  • hotfix_final.txt 与 release_final.txt 由第2部分的检查产出,经人工核对(含PR、CI、标签与保护策略)
  • 使用如下命令再次可视化确认(只读):
    • xargs -a hotfix_final.txt -I{} sh -c 'echo "HOTFIX {}"; git log --oneline --decorate --graph -n 3 $REMOTE/{}'
    • xargs -a release_final.txt -I{} sh -c 'echo "RELEASE {}"; git log --oneline --decorate --graph -n 3 $REMOTE/{}'

步骤 2:为每个待删除分支创建备份标签(可逆性)

  • 说明:将远程分支 tip 提交打上带注释的归档标签,命名规范:archive/YYYYMMDD/<类型>-<分支路径用短横线替代斜杠>
  • 命令:
    • while read b; do
      sha=$(git rev-parse $REMOTE/$b) || exit 1;
      safe=$(echo "$b" | tr '/' '-');
      tag="$TAG_PREFIX-$safe";
      git tag -a "$tag" "$sha" -m "archive: $b (tip=$sha) cleaned after hotfix verification for 支付风控服务 on $(date -Iseconds)";
      done < hotfix_final.txt
    • while read b; do
      sha=$(git rev-parse $REMOTE/$b) || exit 1;
      safe=$(echo "$b" | tr '/' '-');
      tag="$TAG_PREFIX-$safe";
      git tag -a "$tag" "$sha" -m "archive: $b (tip=$sha) cleaned after release completion for 支付风控服务 on $(date -Iseconds)";
      done < release_final.txt
    • 推送标签:
      • git push $REMOTE --tags

步骤 3:本地安全删除(如存在对应本地分支)

  • 说明:仅删除已完全合并的本地分支;命令会在未合并时拒绝删除
  • while read b; do
    if git show-ref --verify --quiet refs/heads/${b#/}; then
    git branch -d ${b#
    /};
    fi;
    done < hotfix_final.txt
  • while read b; do
    if git show-ref --verify --quiet refs/heads/${b#/}; then
    git branch -d ${b#
    /};
    fi;
    done < release_final.txt

步骤 4:远程删除分支(确认后执行)

  • 注意:删除前再次核对是否存在保护策略;如有需临时解除保护并经审批
  • 删除命令(逐条或批量,均为非强制删除):
    • xargs -a hotfix_final.txt -n1 -I{} sh -c 'echo "Deleting $REMOTE/{}"; git push $REMOTE --delete {}'
    • xargs -a release_final.txt -n1 -I{} sh -c 'echo "Deleting $REMOTE/{}"; git push $REMOTE --delete {}'

步骤 5:删除后同步与清理引用

  • git fetch --all --prune
  • 验证远程不再存在对应分支:
    • git ls-remote --heads $REMOTE "$HOTFIX_NS*" "$RELEASE_NS*"
  • 更新团队文档/任务单,附清理报告(含分支清单、对应备份标签、时间)

4. 验证方案(成功标准和异常处理)

成功标准

  • 分支层面
    • 待清理分支在远程已不存在:git ls-remote --heads $REMOTE "$HOTFIX_NS*" "$RELEASE_NS*" 不包含已删除分支
    • 本地不再存在同名分支:git branch | egrep "^( )?(hotfix|release)/" 不包含已删除分支
  • 可追溯性
    • 对应的 archive/YYYYMMDD-* 备份标签已推送存在:git tag -l "$TAG_PREFIX-*"
    • 从 MAIN/DEV 均可到达原分支 tip(提交可达性验证):
      • 对每个已删除分支 :git merge-base --is-ancestor $REMOTE/$MAIN 为真;如存在 DEV 亦为真
  • 交付与流水线
    • 与本次清理分支相关的 CI/CD 未出现意外触发或失败
    • 发布标签(如 vX.Y.Z)完好且可展示:git show vX.Y.Z 正常
  • 报告与记录
    • 清理前清单、删除结果、失败项与异常处理、备份标签列表均已归档

异常处理

  • 远程拒绝删除(受保护或权限不足)
    • 措施:保留备份标签;申请临时取消保护或由管理员执行;执行后恢复保护策略
  • 发现未合并提交(日志检查有输出)
    • 措施:中止该分支删除;将差异合并回 MAIN/DEV 或进行变更评审;合并完成后再纳入清理
  • 找不到对应发布标签或标签类型为轻量标签
    • 措施:由发布负责人补齐 annotated 标签,并更新发布记录后再清理
  • 误删或需恢复
    • 恢复命令:git checkout -b <原分支名> <备份标签名> && git push $REMOTE <原分支名>
  • 标签命名冲突或推送失败
    • 措施:更换 TAG_PREFIX(包含时间戳),重新创建并推送标签

5. 注意事项(风险提示和最佳实践建议)

  • 风险提示
    • 未完成回合并的热修复被删除,导致修复丢失或偏差
    • 删除仍被 CI/CD、环境绑定使用的分支,导致流水线失败或回滚困难
    • 未打发布标签或标签不规范,影响审计与追溯
    • 分支保护规则未评估,导致执行中断或误操作
  • 规避措施
    • 坚持“先合并验证、再删除”的双通道检查(MAIN 与 DEV)
    • 清理前生成并公示候选清单,至少1名代码所有者复核
    • 为每条分支创建 annotated 备份标签并推送,保留至少90天
    • 在变更窗口执行,确保发布负责人与运维在岗
    • 执行全程记录命令输出与结果,提交清理报告
  • 最佳实践
    • 统一命名:hotfix/、release/、标签 vX.Y.Z
    • 发布完成流程固化:发布分支合并回 MAIN 与 DEV → 打 annotated 版本标签 → 生产验证通过 → 纳入清理候选
    • 周期性自动生成候选清单(仅只读),人工审批后执行清理
    • 对 MAIN/DEV 保持分支保护与受控推送,严禁直接在生产分支强推

以上流程遵循常见 Git 工作流与业界规范,避免使用强制删除命令,所有删除操作在“已合并 + 已备份标签 + 已验证”的前提下进行,并提供可逆的恢复路径。

示例详情

解决的问题

以极低学习成本,帮助研发团队在“版本发布完成、功能合并落地、热修复收尾”等关键节点,快速生成一份可直接执行的分支清理流程文档。该流程覆盖风险评估、检查清单、分步操作、验证与回滚,确保清理安全可控、过程可追溯、结果可验收,减少跨团队沟通与反复对齐,显著降低误删与遗漏带来的交付风险。

适用用户

技术负责人/CTO

在版本发布或里程碑结束后,快速生成并审核分支清理方案,量化影响与风险,安排执行窗口,保障主干与生产环境稳定。

研发工程师

根据生成的步骤清理特性、修复与临时分支,按验证与回滚提示处理异常,减少沟通反复,专注迭代开发。

DevOps/平台工程师

将标准流程纳入例行任务或流水线,统一权限与保护策略,沉淀操作记录,提升可追踪性与团队一致性。

特征总结

基于发布、合并、热修复等事件,一键生成标准化分支清理方案,省时省心。
自动识别待清理分支与依赖关系,给出清单与优先级,避免误删与遗漏。
内置风险评估与回避建议,覆盖回滚、保护分支、权限校验,确保安全可逆。
输出逐步操作指令与执行要点,配合常用工具即可落地,新人也能稳妥执行。
提供验证标准与异常处理路径,完成后自动对齐成功指标,降低线上隐患。
支持按项目参数化定制,保留团队约定与命名规则,生成贴合实际的清理流程。
一键生成可审阅文档,便于评审、留档与溯源,协作更清晰,合规与交付更可控。
可与发布节奏联动,发布完成即触发清理计划,持续保持代码库整洁与稳定。
兼顾长期未更新分支的识别与归档策略,减少库存代码负担,提升检索与协作效率。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 570 tokens
- 3 个可调节参数
{ 项目名称 } { 触发事件 } { 清理范围 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59