一般用 rebase,用不了的时候采用 merge 。不能用 rebase 的原因有:
1. 分支不是私有的,已经被多人 checkout 或者 branch,rebase 会对合作者的工作流造成破坏
2. 需要保留原始提交的时间轨迹,例如分支发布过版本
3. commit 带 gpg 签名,rebase 毫无疑问会破坏签名
4. 分支差异过大,rebase 过程会大量 conflict
svn 和 git 的根本性区别是集中式 vs 分布式,只是因为 git 的 branch 成本低所以能玩得转频繁分支的工作流 |