git的Rebase和Merge之间的区别
有人会说Merge更好,因为它保留了最完整的工作历史。其他人则认为,Rebase变得更整洁,这使审阅者的生活更轻松,更高效。本文将解释合并和重新设置之间的区别是什么,使用它们之一有什么好处。
从根本上讲,合并和rebase提供了相同的目的,以将来自一个分支(有时倍数分支)的变化集成到另一个分支中。最常用的是在打开Pull请求之前将最新的Master或开发分支集成。虽然目的是相同的,但Merge和Rebase达到的方式不同。

想象一下,您有一个这样的分支“功能”,它是从“基础”的“开发”分支出来的。从那时起,您就完成了C,D,E的工作,并且对develop进行了2个更改,即A,B。现在,您想打开一个pull请求,将“您的功能”集成到“ develop分支”中。。在此之前,您必须将“开发分支”中的更改集成到“您的功能分支”中,这样您的拉取请求中就不会出现冲突。
Merge

合并将在您的特征分支中将更改集成,并创建一个新的提交F. F是合并开发分支的提交,如果有的话,对冲突进行排序。此方法将为特征分支带来Develp分支的更改,即A和B。现在,您的特征分支上的提交是C,A,D,B,E,F.有3个添加到您的功能分支中的其他提交。
Rebase

另一方面,rebase会移动整个功能分支,就像它从一开始就从开发分支的最新提交分支出来一样。Rebase将首先搜索功能分支的基础,然后将其更改为开发分支B上的最新提交,然后根据该基础B将所有提交重新应用到功能分支上。Rebase实际上是创建新提交,C’,D’,E’。原始提交保持不变。最后,它将要素分支指向的要素从E更改为E’。
优点
这两种方法之间的最大区别在于,合并保留了作品的完整历史记录,包括按时间顺序排列,而Rebase使提交变得整洁,仅与分支上的作品相关。当审阅者审阅您的PR时,如果您选择合并,她将看到A,B,C,D,E,F提交,如果您选择Rebase,则只会看到C,D,E。
合并具有较高的可追溯性。无论与该公关相关如何,您都可以找到整个工作历史。但它可能对审稿人来说是痛苦的,因为该分支包括许多无关的犯罪,并且往往很难识别它们。
Rebase的确可以使PR整洁,干净且相关,而不会产生嘈杂的提交。审阅者可以轻松了解此PR的含义以及该分支内进行的更改。但是,如果您想跟踪存储库的详尽历史记录,可能并没有太大帮助。
Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。
那我应该使用哪一个?
这实际上取决于您的组织所采用的工作策略。您必须权衡Rebase的价值与Merge可追溯性的价值。这两种方法也可能同时应用,在某些情况下请使用某种方法。
根据我的个人经验,Rebase更为有利,因为它提供了与团队成员合作的更轻松的方式。而且在大多数时候,我们确实应该避免将与我们的工作无关的提交包含在PR中。这很容易导致混乱。
git的Rebase和Merge之间的区别的更多相关文章
- git之rebase、merge和cherry pick的区别(面试常问)
git flow图例镇楼 merge 这个简单,初学者常用.比如主分支是Dev,最新版本是01.然后小明基于此,搞了个feature 分支A,业务:打酱油.然后在上面多次提交,完成功能迭代开发,如A1 ...
- git比较两个版本之间的区别
查看当前没有add 的内容修改: git diff 查看已经add 没有commit 的改动 git diff --cached 查看当前没有add和commit的改动: git diff HEAD ...
- git/svn里面的merge和rebase区别
现在一般都用界面化的东西了,这种用法相近的命令行知不知道区别都可以.但是有些人喜欢研究,那么我来个传送门: 当我们用命令行操作git的时候,merge和rebase 有什么区别,请参考 https:/ ...
- 关于Git中分支merge和rebase的适用场景及区别
最近刚接触Git,下面对一些基本的使用做一下总结. 本文是转载于CSDN:http://blog.csdn.net/rryqsh/article/details/8230560 几乎所有的版本控制工具 ...
- Git:pull --rebase 和 merge --no-ff
首先是吐嘈 如果你正在 code review,看到上图(下文将称之为:提交线图)之后,特别是像我这样有某种洁癖的人,是否感觉特别难受?如果是的话,请看下文吧 :) 为什么 Git 作为分布式版本控制 ...
- git rebase 还是 merge的使用场景最通俗的解释
什么是 rebase? git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点.这个时候才能知道你当前分支于你需要比较的分支之间的差异. 原理很简单:rebase需 ...
- git fetch和git pull之间的区别--转载
原文地址:http://blog.csdn.net/a19881029/article/details/42245955 git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢 ...
- git代码合并:Merge、Rebase的选择
代码合并:Merge.Rebase的选择 Zhongyi Tong edited this page on Dec 7, 2015 · 3 revisions Pages 19 Home 2.1 快速 ...
- Git Rebase和Merge的用法
title: Git Rebase和Merge的用法 categories: 后端 tags: - Git Rebase和Merge是什么? merge和rebase的作用都是合并两个分支,其区别在于 ...
- 13.Git分支-变基(rebase)、rebase VS merge
1.变基的基本操作 在Git中整合来自不同分支的修改主要有两种方法:merge和rebase. 看下面的例子: 开发任务分叉到了两个不同的分支,并且都有了新的提交. 这时候我们可以使用 git mer ...
随机推荐
- org.apache.catalina.LifecycleException: Error in resourceStart()
ssh项目,tomcat7,又一个月没运行这个项目,再次运行就给我报tomcat7无法启动错误.看了其他博客基本分为三类: 1.情work目录的,https://blog.csdn.net/iteye ...
- uniapp里面设置onlaunch以后在加载页面调接口
main.js 里面 Vue.prototype.$onLaunched = new Promise(resolve => { Vue.prototype.$isResolve = resolv ...
- java.io.IOException: Cannot run program "phantomjs": CreateProcess error=2, 系统找不到指定的文件
一.问题 运行该指令的程序找不到phantomjs这个指令 二.解决 1.配置全局变量 注意!!! 要配置系统变量,只配置用户变量,可能还会出现该错误.ps:我就是只配置用户变量,导致一直出错... ...
- 攻防(一)tomcat CVE-2020-1938,ftp 21端口
TOMCAT kali自带POE msf6 > use auxiliary/admin/http/tomcat_ghostcat set RHOST 10.98.xx.xx msf6 auxil ...
- 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件
1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...
- Derivative of the Sigmoid function
一个详细介绍怎么推导Derivative of the Sigmoid function的文章- https://towardsdatascience.com/derivative-of-the-si ...
- == 和 equal 的区别
== 比较的是两个对象的索引是否相同: equal 比较的是两个对象内容是否相同: int a = 1;long b = 1L;a==b? 答案是 对:因为a和b指向的索引地址相同. 再例如 Stri ...
- 测试Lock锁
package com.company;import java.util.concurrent.locks.ReentrantLock;//测试Lock锁public class TestLock i ...
- Spring Boot中使用过滤器和拦截器
过滤器(Filter)和拦截器(Interceptor)是Web项目中常用的两个功能,本文将简单介绍在Spring Boot中使用过滤器和拦截器来计算Controller中方法的执行时长,并且简单对比 ...
- php 解密 java des 密文
背景 对方系统java des 加密, 我们用 php 解密 模式基本介绍 ECB模式:电子密本方式,JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节 ...