Hasty Briefsbeta

双语

Stacked Diffs with git rebase —onto

6 months ago
  • #git
  • #stacked-diffs
  • #version-control
  • 堆叠式差异(或堆叠式PR)将大型功能拆分为多个相互依赖的小PR,便于代码审查
  • 常规的`git rebase`可能导致提交重复或冲突,不适用于堆叠分支
  • `git rebase --onto <新基> <旧基> <分支>`可干净地重定基依赖分支,避免引入多余提交
  • 标记分支(如`feature-2-base`)用于记录父分支先前状态,确保准确重定基
  • 首次同步步骤:先重定基父分支(`feature-1`),再用`--onto`重定基依赖分支(`feature-2`),最后更新标记分支
  • 当main分支更新时重复同步流程:重定基父分支→重定基依赖分支→更新标记
  • 使用交互式重定基(`git rebase -i main`)清理已合并到依赖分支的功能提交
  • 由于重定基会改变提交哈希,必须使用强制推送(`git push --force-with-lease`)
  • 严格遵守标记分支规范是避免同步问题的关键
  • 建议将堆叠差异控制在2-3层以内,以平衡优势和维护成本