核心用法
post-merge-rename 是一个 Git 分支历史保护工具,专为团队保留完整的代码演进轨迹而设计。它在 PR 合并后自动执行,扫描已合并到主分支的本地分支,并追加 --merged-YYYY-MM-DD 时间戳进行重命名,而非直接删除。
三种执行模式:
- 默认模式:
bash scripts/post-merge-rename.sh—— 扫描并重命名所有符合条件的分支 - 预览模式:
--dry-run—— 仅展示将要执行的操作,零风险验证 - 单分支模式:
<branch>—— 针对特定分支精准处理
执行流程: 识别已合并分支 → 跳过已标记分支 → 提取合并日期 → 本地重命名 → 推送新分支 → 清理远程旧分支名
显著优点
1. 历史可追溯性:保留分支完整元数据,便于审计、复盘和回滚
2. 零数据丢失:彻底规避 git branch -D 的不可逆风险
3. 自动化集成:作为 wip-release 流程的第 10 步自动触发,减少人工遗漏
4. 幂等安全:已标记分支自动跳过,重复执行无副作用
5. 日期标准化:ISO 8601 日期格式确保排序和检索一致性
潜在局限
- 依赖 bash/git:Windows 环境需 Git Bash/WSL 支持
- 远程同步延迟:重命名后需网络操作推送,大仓库可能较慢
- 命名冲突:若原始分支名已含
--merged-子串可能异常(虽概率极低) - 权限要求:需远程仓库分支推送/删除权限
- 非即时反馈:作为
wip-release子步骤,独立使用需手动触发
适合人群
- 合规驱动型团队:金融、医疗等需完整审计链的行业
- 大型长期项目:多版本并行、频繁 hotfix 的复杂仓库
- 谨慎型开发者:对
git push --force和分支删除有心理障碍的用户 - DevOps 工程师:构建标准化发布流水线,嵌入 CI/CD 保障历史完整性
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
远程引用残留 | 旧分支名可能在其他协作者本地缓存 | 团队统一执行 git fetch --prune |
自动化误触发 | 作为 wip-release 步骤,需确保前置合并确实成功 | 流水线加入合并状态校验 |
日期时区歧义 | 合并日期以 Git 提交者时区为准 | 团队统一 UTC 或明确时区策略 |
---
来源:WIP Computer 官方工具箱,MIT 开源协议