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 ...
随机推荐
- 第三讲: xpath定位方法
如果大家有机会做web自动化测试的工作,在框架搭建好之后,大部分的工作都是在写定位表达式,然而,8大元素定位方法中,id.name.class_name.link_text.partial_lin ...
- 廖雪峰JS知识点整理——快速入门
基本语法 1.每个语句以:结尾. 2.单行注释://... 3.多行注释:/*... ...*/ 数据类型和变量 运算 1.==自动转换数据类型在比较,不推荐使用 2.===不会转换数据类型,推荐使用 ...
- 远程访问ubuntu电脑
遇到的问题: 由于疫情的影响,一直在家划水,这几天突然想看看能不能通过我手中的笔记本远程访问那台在学校"落灰"的工作站呢? 目前有一台闲置的电脑,多个键已经"失灵&quo ...
- MQTT服务器搭建——Liunx安装mosquitto,并设置用户密码
一.安装 1.下载mosquitto安装包 地址:http://mosquitto.org/files/source/ 2.安装依赖包 yum install gcc gcc-c++ libstdc+ ...
- SQL之查询
1. SQL之模糊查询 例如查询姓名时,不用输入全名,仅仅输入其中的一部分 语法: select 列名 from 表名 where 列名 like 匹配串 其中 匹配串用英文的单引号括起来 四种匹配模 ...
- 微信小程序—标题栏
<template> <view :style="{paddingTop: statusBarHeight + 'px',background:bg}" clas ...
- django_url反向解析
**************************************************************************************************** ...
- Django: sqlite的版本问题小记 “SQLite 3.8.3 or later”
问题概述 在Django中,默认的数据库时SQLite3. 可能会出现sqlite版本问题的报错,具体如下 起初我直接在django的project下面开了个cmd窗口,python python m ...
- ZFBJ - 1 - 42 - NO.1
- MarkDown使用规范
写博客的简单语法. 标题语法 一级标题:# 标题内容 二级标题:## +标题内容 三级标题:### +标题内容 后续标题语法依次增加# 注:#号后有空格 MarkDown最高支持六级标题. 字体语法 ...