2026/4/3 6:08:45
网站建设
项目流程
宁波品牌网站建设,免费微网站_自助建站,广州地铁5号线,百度怎么做广告1. 基本概念git merge作用#xff1a;将两个分支的内容合并到一起#xff0c;通常是把某个分支#xff08;如 feature 分支#xff09;合并到主分支#xff08;如 master#xff09;。历史记录#xff1a;保留所有分支的提交历史#xff0c;并生成一个新的合并提交将两个分支的内容合并到一起通常是把某个分支如 feature 分支合并到主分支如 master。历史记录保留所有分支的提交历史并生成一个新的合并提交merge commit。命令示例git checkout master git merge featuregit rebase作用将一个分支的所有提交“移动”到另一个分支的最新提交之后。历史记录会重写提交历史使分支看起来像是从目标分支直接分叉出来的没有合并提交。命令示例git checkout feature git rebase master2. 工作原理Merge 原理会产生一个新的合并节点commit把两个分支的变化都包含进去。分支历史是分叉的合并后会有一个“汇合点”。示意图A---B---C (master) \ D---E (feature)合并后A---B---C---F (master) \ / D---E (feature)F 是 merge commit。Rebase 原理会将 feature 分支上的提交D、E“摘下来”然后放到 master 的最新提交C之后提交哈希会变化。历史变得线性没有合并节点。示意图A---B---C (master) \ D---E (feature)rebase 后A---B---C---D---E (feature)D’、E’ 是新的提交哈希变化。3. 优缺点对比mergerebase历史保留分支历史产生合并节点线性历史无合并节点冲突处理一次性解决所有冲突每个 commit 逐一解决冲突协作更安全适合多人协作适合个人开发慎对公共分支使用可读性复杂分叉明显清晰线性提交哈希不变变更新哈希4. 使用场景建议merge适合多人协作不会重写历史安全可靠适合合并公共分支如 master。rebase适合个人开发或整理提交历史让提交更清晰。不要在公共分支上 rebase可能导致他人提交丢失。5. 总结merge保留分支历史产生合并提交分叉明显。rebase重写历史线性提交无合并节点。选择建议本地开发可以用 rebase 整理历史最终合并到主分支建议用 merge。6. 实际开发场景举例场景一多人协作开发推荐 merge假设你和同事都在feature分支上开发期间主分支master有新的提交。如果你用rebase会改变feature分支的提交哈希导致同事的本地分支和你的分支产生冲突后续推送/拉取会很麻烦。所以多人协作时推荐用merge。场景二个人开发整理提交推荐 rebase如果你在feature分支上开发期间master有更新你想让自己的提交历史更清晰可以用rebase。这样你的提交在master最新提交之后看起来像是“直接”基于最新代码开发的。7. 命令演示和常见问题合并分支merge# 切到主分支 git checkout master # 合并 feature 分支 git merge feature若有冲突Git 会提示你解决冲突解决后继续git add . git commit变基分支rebase# 切到 feature 分支 git checkout feature # 变基到 master git rebase master若有冲突Git 会暂停 rebase提示你解决冲突。解决后继续git add . git rebase --continue如果想放弃 rebasegit rebase --abortrebase 后推送注意事项如果你已经把feature分支推送到远程且 rebase 后哈希变了推送时要用--force或--force-with-lease否则会被拒绝git push origin feature --force注意强推会覆盖远程分支慎用8. 交互式 rebase整理提交历史git rebase -i可以在本地整理自己的提交历史比如合并、修改、删除提交git checkout feature git rebase -i master会弹出编辑界面可以对提交做各种操作。9. 什么时候不能用 rebase公共分支禁止 rebase如果分支已经推送到远程且多人在用rebase 会导致别人本地分支和远程分支不一致容易引发混乱。已合并到主分支的分支不建议再 rebase。10. 总结口诀多人协作用 merge个人整理用 rebase。公共分支慎用 rebase本地分支大胆用。rebase 会改变历史merge 保留历史。