git pull --rebase 和 git pull
git pull = git fetch + git merge git pull --rebase = git fetch + git rebase
用git merge命令把"origin"分支上的修改pull下来与本地提交合并,生成一个新节点G,并保留了原有的提交,但这样会形成图中的闭环。
用git rebase创建一个新的提交,提交的内容和上面的一样,但我们将test提交重放到master分支上,保持提交曲线为直线,让大家易于理解。
总结git merge和git rebase的区别:
merge:生成一个新节点,之前的提交分开显示。 rebase:不生成新节点,是将两个分支融合成一个线性的提交。
补充
补充:
git pull默认是git fetch+git merge FETCH_HEAD,把远端新提交与本地当前分支合并,会产生一个 merge commit,可能形成闭环。git pull --rebase是git fetch+git rebase FETCH_HEAD,把本地未推送的提交重放到远端最新提交之后,历史保持线性,便于 review,但改写了本地 commit 的哈希。- 选择建议:
- 公共分支 / 已推送的提交:优先用 merge,避免因 rebase 改写历史影响他人。
- 私有本地分支:可用 rebase 保持线性历史,再
git push --force-with-lease。- 常用组合:
git pull --rebase --autostash在 rebase 前自动 stash 工作区改动,避免冲突时丢失。
来源整理自:我的有道云笔记



