ResizeObserver与IntersectionObserver实战指南
2026/9/14 21:07:10
在团队开发中,我们经常会遇到这样的场景:
main / master)在不断前进这时,Git 给我们提供了两种选择:
git mergegit rebase它们都能“合并代码”,那到底有什么区别?
merge的核心思想是:
把两个分支的历史“汇合”在一起,并生成一个新的合并提交。
示意图如下:
A---B---C---D (main) \ / E---F (feature)合并后:
A---B---C---D------M (main) \ / E---F----- (feature)其中M是一个Merge Commit。
gitcheckout maingitmerge feature注意要合并的时候切换到目标分支
rebase的核心思想是:
把当前分支的提交“挪到”另一个分支的最新提交之后。
示意图:
A---B---C---D (main) \ E---F (feature)Rebase 后:
A---B---C---D---E'---F' (feature)注意:
E'、F'是新提交E、F已被替换gitcheckout featuregitrebase main| 维度 | merge | rebase |
|---|---|---|
| 是否生成新提交 | 是(merge commit) | 否(重写提交) |
| 历史是否线性 | 否 | 是 |
| 是否修改历史 | 否 | 是 |
| 风险程度 | 低 | 高 |
| 适用场景 | 公共分支 | 本地分支 |
| 操作 | 当前所在分支 | 目标分支 | 命令格式 |
|---|---|---|---|
git rebase | ✓当前分支 | 要变基到的分支 | git rebase 目标分支 |
git merge | ✓当前分支 | 要合并进来的分支 | git merge 来源分支 |
git rebase --continue❗永远不要 rebase 已经推送到远程的公共分支
原因:
✅ 推荐 rebase
gitcheckout featuregitrebase main目的:
👉 保持提交历史干净
✅ 推荐 merge
gitcheckout maingitmerge feature目的:
👉 保留真实开发历史
gitrebase -i HEAD~3可用于:
rebase同步主分支merge或squash mergemain/master执行 rebase【五分钟学会git rebase和 git merge的区别】
Git:图解 merge 和 rebase 的区别