论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
开源技术
›
开源技术
›
git的rebase 和 merge 的区别
git的rebase 和 merge 的区别
美丽的神话
金牌会员
|
2024-11-10 11:20:10
|
显示全部楼层
|
阅读模式
楼主
主题
993
|
帖子
993
|
积分
2979
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
rebase 和 merge 的区别
Merge(合并)和 Rebase(变基)是 Git 中两种常用的分支整合方式,它们有不同的工作原理和适用场景:
Merge(合并):
● Merge 操作将两个分支的不同提交记录合并成一个新的提交记录。
● 在合并时,Git 会自动将两个分支的最新更改合并到一起,并自动天生一个新的合并提交。
● 合并操作保存了完备的提交历史,保存了每个分支上的提交记录,形成一个合并的历史分支。
● Merge 操作通常用于将一个分支的更改应用到另一个分支上,大概将两个独立开发的分支合并在一起。
Rebase(变基):
● Rebase 操作是指改变基准点,将一个分支的提交记录在另一个分支之前重新应用。
● 在变基时,Git 会将要变基的分支上的提交记录挨个应用到目标分支上,并重新创建提交历史。
● 变基操作会将一系列的提交记录整合成一个线性序列,看起来像是在一个分支上一连开发的。
● Rebase 操作可以整理提交历史,保持提交线的干净和直观。
● Rebase 操作常用于整理分支提交历史、合并长途代码、保持线性提交历史、淘汰合并提交等。
区别:
● Merge 保存了每个分支的独立提交历史,而 Rebase 则重新构造了提交历史,使其呈现出一个线性的提交历史。
● Merge 操作会天生一个新的合并提交,而 Rebase 操作会修改原有的提交记录。
● Merge 操作相对较安全,因为它保存了每个分支的完备信息,但会在历史记录中保存合并记录。Rebase 操作大概会改变原有的提交历史,如果不小心利用大概会导致问题。
● Merge 操作通常用于合并两个独立开发的分支,而 Rebase 操作用于整理提交历史或将一个分支的更改应用到另一个分支上。
在Git中,merge和rebase是用来整合不同分支的两种常用方法,它们有一些重要的区别。
Merge
merge操作会将两个分支的历史记录合并到一起,创建一个新的“合并提交”(merge commit)。合并后的提交历史包罗了两个分支的全部提交,保存了分支结构。
将incoming-branch合并到当前分支
git merge incoming-branch
特点:
保存历史:全部提交记录都会保存,分支的合并点清晰可见。
合并提交:会产生一个新的合并提交,用于标志合并操作。
冲突处理:在合并过程中处理冲突。
Rebase
rebase操作会将当前分支的提交“重新放置”到目标分支的顶部,改变提交历史。它通过“重放”当前分支的提交到目标分支来实现。
将当前分支变基到incoming-branch上
git rebase incoming-branch
特点:
线性历史:通过改变提交次序,使提交历史变得更加线性,制止了合并提交。
重写历史:重写当前分支的提交历史,使其基于目标分支。
冲突处理:在重放提交过程中逐个处理冲突。
选择
利用merge的情况:
○ 必要保存完备的历史记录,包括分支和合并点。
○ 团队协作时,合并点可以清晰地展示分支何时和如何合并。
利用rebase的情况:
○ 盼望保持提交历史的整齐和线性,尤其是在个人开发分支上。
○ 准备将个人工作分支集成到共享分支之前。
示例
假设我们有如下的提交历史:
A—B—C (main)
D—E (feature)
利用merge:
git checkout main
git merge feature
结果:
A—B—C—M (main)
\ /
D—E (feature)
(M是合并提交)
利用rebase:
git checkout feature
git rebase main
结果:
A—B—C—D’—E’ (feature)
(main)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
美丽的神话
金牌会员
这个人很懒什么都没写!
楼主热帖
Python 实现贪心算法
Spark快速上手(3)Spark核心编程-RDD转 ...
Python自动操作 GUI 神器——PyAutoGUI ...
什么是超融合数据中心网络? ...
java中Files.mismatch方法具有什么功能 ...
Kubernetes——Pod对象的声明周期(Pod ...
哈工大软件构造Lab3(2022)
GIS前沿技术
彻底理解 volatile 关键字及应用场景, ...
C# net core 微信公众号导出历史文章 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
容器及微服务
DevOps与敏捷开发
网络安全
程序人生
前端开发
IOS
Mysql
Java
Postrge-SQL技术社区
物联网
快速回复
返回顶部
返回列表