核心用法
post-merge-rename 是一个 Git 工作流工具,用于在 PR 合并后自动重命名源分支。通过在原分支名后追加 --merged-YYYY-MM-DD 时间戳,实现"归档式清理"而非物理删除,确保完整历史可追溯。
使用方式
bash scripts/post-merge-rename.sh # 扫描并重命名所有已合并分支 bash scripts/post-merge-rename.sh --dry-run # 仅预览,不执行 bash scripts/post-merge-rename.sh <branch> # 重命名单个指定分支
工作流程
1. 列出所有已合并到 main 的本地分支
2. 跳过已重命名分支(含 --merged- 标识)
3. 从 Git 历史提取合并日期
4. 执行重命名:feature-branch → feature-branch--merged-2026-03-09
5. 推送重命名后的分支到 origin
6. 删除 origin 上的旧分支名
显著优点
- 历史零丢失:物理保留分支,仅变更名称,所有提交记录、评论、关联的 CI/CD 日志完整保留
- 可追溯性增强:时间戳明确标记合并时间点,便于后期审计与回滚
- 安全设计:
--dry-run预览模式、自动跳过已处理分支,避免误操作 - 自动化集成:作为
wip-release流程第 10 步自动执行 - 团队协作友好:远程仓库同步更新,团队成员可识别已归档分支
潜在缺点与局限性
- 命名污染:长期积累可能导致分支列表臃肿,需配合定期清理策略
- Git 命令依赖:依赖
git和bash环境,Windows 原生环境需 WSL 或 Git Bash - 权限要求:需要 origin 的写权限以推送重命名分支和删除旧引用
- 日期准确性:合并日期提取依赖本地 Git 历史,若历史被篡改(rebase/force-push)可能不准确
- 分支名冲突:若原分支名已含
--merged-子串可能触发意外跳过
适合人群
- 采用 Git Flow 或类似分支策略的研发团队
- 对审计合规、历史追溯有要求的金融、医疗等行业
- 追求"永不删除"安全哲学的保守型运维团队
- 使用
wip-release自动化发布流程的 WIP 工具链用户
常规风险
- 误删远程分支:脚本第 6 步会删除 origin 旧分支名,若权限配置错误或网络中断可能导致意外状态
- 命名覆盖:极端情况下若两个分支在同一天合并且原名称相似,重命名后可能产生混淆
- 自动化副作用:作为
wip-release第 10 步自动运行时,用户可能未察觉分支已被重命名,后续本地引用需手动更新