当前位置: 首页 > article >正文

git rebase 和 merge的区别

git rebase 和 merge都具有合并代码的功能,刚上手时,可能满头问号。比如git merge dev和git rebase dev实现了同样的功能,但是,rebase(变基)和 merge(合并)是两种不同的分支集成策略,核心区别在于提交历史的处理方式和适用场景。
特性
git merge 保留分支的原始提交历史
保留分叉结构(可能有多个合并节点)
在合并提交中一次性解决冲突
适用于公共分支协作(如主分支合并)
安全,不修改历史

git rebase将提交历史“复制”到目标分支,形成线性历史
生成线性历史(无分叉)
在每次提交迁移时逐个解决冲突
本地分支整理(如清理临时提交)
可能破坏公共提交历史(需谨慎使用)
原分支的提交哈希值会改变(历史被重写)

冲突解决流程对比
git merge 合并提交时一次性冲突
编辑冲突文件 → git add → git commit (必须解决冲突)

git rebase每个迁移的提交都可能触发冲突
编辑冲突文件 → git add → git rebase --continue
git rebase --abort 可放弃变基

rebase放弃变基
(如果变基过程中意识到操作有误(例如选择了错误的目标分支),使用此命令可以安全撤销所有临时改动,避免引入混乱的提交历史)
栗子
执行变基后出现冲突
git rebase master
发现冲突复杂,决定放弃
git rebase --abort --abort 仅影响本地仓库,不会修改远 程分支
解决了,继续
git rebase --continue
(变基前存在未提交的本地修改,建议先通过 git stash 暂存)

实践
公共分支使用 merge

主分支(如 main)合并时保留合并提交,避免历史重写导致团队协作混乱。
本地分支使用 rebase

本地开发时通过 git rebase 同步主分支更新,保持提交历史线性化。
黄金法则

禁止对已推送的公共分支执行 rebase(避免强制推送破坏他人代码)。
交互式变基(Interactive Rebase)
使用 git rebase -i HEAD~3 合并、编辑或重排提交,优化提交历史。

git merge:简单安全,适合保留完整开发历史和团队协作。
git rebase:历史更清晰,适合本地提交整理和代码同步。


http://www.kler.cn/a/567832.html

相关文章:

  • sklearn中的决策树-分类树:泰坦尼克号生存预测
  • 全面了解机器学习:监督、无监督、半监督、深度和强化学习
  • 随身wifi wps是什么?(Wi-Fi Protected Setup)一种简化无线网络连接的技术,允许用户无需手动输入密码即可快速连接设备
  • 开源绝版经典小游戏合集
  • Spring Boot 项目中如何在 `pom.xml` 文件中引入本地 JAR 包
  • 【Python爬虫(100)】从当下到未来:Python爬虫技术的进阶之路
  • doris:Hudi Catalog
  • 实现dify与docker下载安装
  • 神经网络|(十一)|神经元和神经网络
  • Python每日一练:学习指南进行汇总
  • NLP09-朴素贝叶斯问句分类(3/3)
  • SpringBoot敏感数据脱敏怎么处理
  • 学生管理前端
  • 认知动力学视角下的生命优化系统:多模态机器学习框架的哲学重构
  • 船舶广播系统:航行中的信息枢纽和安全保障
  • Linux 动静态库和_make_进度条(一)
  • 论文笔记-NeurIPS2017-DropoutNet
  • 【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘
  • C++动态与静态转换区别详解
  • Qt显示一个hello world