merge 与 rebase 的选用
你将学会什么
Section titled “你将学会什么”- 说清
merge与rebase各自保留什么、整理什么 - 判断本地私有分支与共享分支分别该用哪种
- 理解“可读性重要,协作信任更重要”
merge 会保留完整分支历史,适合把长期功能分支合回主分支;rebase 会把提交重新整理成一条线性历史,适合在本地整理私有提交。一个学生项目的实用经验是:
- 本地只有你一个人开发时,用
rebase整理提交 - 你的提交已经推送到远端、且其他人可能基于该分支继续工作时,改用
merge
如果你在共享分支上随意执行 rebase -i 或强制推送,很容易把同学的本地分支打乱。记住:可读性很重要,但协作信任更重要。
# 本地整理私有提交(合入前)git rebase main
# 共享分支合回主分支(保留历史)git merge feature/quiz-report先自己回答,再看答案:
rebase会把提交历史整理成什么形状?- 为什么共享分支上不建议随意
rebase -i? - 什么情况下优先选
merge而不是rebase?
参考答案
- 一条线性的历史,提交被“重放”到目标分支顶端。
- rebase 会改写提交记录,强制推送可能打乱基于该分支工作的队友。
- 提交已推送且可能被他人基于它继续开发时,merge 更安全。
merge保留历史,适合共享分支;rebase整理历史,适合本地私有提交- 已推送的分支不要随意 rebase 或强制推送
- 拿不准时选
merge,协作信任比历史美观更重要