rebase master后会将master的commit历史加入这个分支吗
🎯 简短答案:
不会直接「加入」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 的提交。 |