【git】rebase 和 merge 区别及使用建议

区别

特性 Merge Rebase
历史记录 保留所有分支历史,生成合并提交 改写历史,线性化提交
提交树 保留分支结构,可能复杂 线性历史,简洁
冲突处理 一次性解决合并冲突 可能多次解决(每个提交)
适用场景 团队协作,公开分支 个人分支整理,追求干净历史

效果

merge

复制代码
A --- B --- C (main)
       \
        D --- E (feature)
合并后:
A --- B --- C --- F (main, F 是合并提交)
       \         /
        D --- E (feature)

rebase

复制代码
A --- B --- C (main)
       \
        D --- E (feature)
Rebase 后:
A --- B --- C --- D' --- E' (main)

使用建议

  • 公司项目:一般推荐使用 git merge,可以看到完整的 git 提交历史,即使提交历史会比较乱。具体看公司要求。
  • 个人项目:不想麻烦,直接使用 git merge 也可以,追求提交历史简洁使用 git rebase。

tips

  • 无论是 merge 还是 rebase,都不会改变代码修改人,都可以在 idea 里面看到代码的作者是谁。只不过 rebase 会改变提交历史。
    • 比如张三从 master 拉了 dev 分支,开发完重新合并到 master 分支。
    • 通过 merge 你可以看到张三从 master 拉了 dev 分支,然后又合并到了 master 分支。而 rebase 后,你无法看到从 master 拉了 dev 分支,然后又合并到了 master 分支。rebase 后,提交历史会变成一条直线,看着比较整洁。
相关推荐
高调的涵涵9 小时前
删了1.2GB,.git仍是1.2GB
git
程序员沉梦听雨10 小时前
【Git】git-submodule子模块管理
git
全栈陈序员1 天前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
7177771 天前
Git自建用什么工具比较好:Gitea、Forgejo、GitLab CE与Gitee的选型对比
git·gitlab·gitea
lsc_blog2 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员2 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员3 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员3 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员3 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚3 天前
Ansible 13 个常用模块---企业实战
git·github