🎯 简短答案:
不会直接「加入」master的 commit,rebase 是将你的分支上的提交,挪到 master 最新提交之后,所以看起来像是你的提交是刚刚基于 master 创建的一样。
🔥 具体过程:
假设你有这个情况:
A---B---C (master)\D---E---F (feature 分支)
如果在 feature 分支上执行:
git checkout feature
git rebase master
rebase 的行为是:
1️⃣ 把 D E F 这些提交,临时取下来。
2️⃣ 把 feature 指向 C(也就是 master 的最新提交)。
3️⃣ 再把 D E F 一个个「重新应用」在 C 后面。
最终得到:
A---B---C---D'---E'---F' (feature)
注意:
D' E' F'是新的 commit hash,和原来的D E F不一样。master的提交历史没有直接「加入」feature 分支,但 feature 分支的提交基于master最新状态重写了。
💡 对比 merge:
如果用 git merge master:
A---B---C (master)\ \D---E---F---M (feature)
会产生一个新的「合并提交 M」,此时 master 的提交历史会完整保留在 feature 分支上,且不会改动 D E F。
⚠️ 总结:
| 操作 | 结果 |
|---|---|
git merge | 将 master 的历史完整加入 feature,保留分支轨迹。 |
git rebase | 让 feature 的提交看起来像是基于 master,历史会重写,不加入 master 的提交。 |
