【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 后,提交历史会变成一条直线,看着比较整洁。
相关推荐
Winlifes5 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理6 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123456 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s7 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git
玄芯散人7 天前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人8 天前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅8 天前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人8 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
szephyr8 天前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
一木 之林8 天前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器