【Git篇 二】idea中使用git合并分支(拉取分支)

idea中使用git合并分支

  • 前言
  • idea使用git合并分支
    • 1) 将主分支(master)更新到自己的分支(dev)
      • ① checkout到自己分支
      • ② 目标分支(dev)更新到当前分支(dev_KC240524
      • ③ 当前分支出现“绿色”箭头提示(push)
    • 2) 将自己的分支(dev)合并到主分支(master)
  • 延申内容: Merge和Rebase的对比以及使用建议
    • 1. merge和rebase的提交历史差异
    • 2. Merge和Rebase的对比以及使用建议

前言

本文来说下idea中使用git合并分支

idea使用git合并分支

1) 将主分支(master)更新到自己的分支(dev)

将主分支(master)更新到自己的分支(dev)

  • 方法1:右下角点击分支、checkout到自己分支下、点击自己的分支、选择 remote branches 中的 origin/master 分支,点击 “Pull into dev_KC240524(当前分支) Using Merge ”。

ps:使用Rebase或Merge都可以 ; 本文中自己新的分支未改动,故使用的Rebase

  • 方法2:checkout到自己分支下、点击Git/Pull、选择 origin/master 分支、点击Pull。

以上两种方法都可。

示例: ps 我使用的是dev更新到dev_KC240524
原理等同我上面所述master更新到dev

① checkout到自己分支

在这里插入图片描述

② 目标分支(dev)更新到当前分支(dev_KC240524

在这里插入图片描述

PS:往下更新时使用Rebase; 往上合并时使用Merge

③ 当前分支出现“绿色”箭头提示(push)

  • 点击push 把代码提交到自己当前分支的远程仓库

2) 将自己的分支(dev)合并到主分支(master)

将自己的分支(dev)合并到主分支(master)

  • checkout到主分支(master)、先Pull一下最新的代码、点击右下角主分支、在local
    branches里选择自己的分支点击"merge selected into current"、然后记得push下、推送至远程仓库。

延申内容: Merge和Rebase的对比以及使用建议

从以下举例说明:

1. merge和rebase的提交历史差异

在这里插入图片描述

我们可以直观看到,经过rebase更新操作提交历史变成了一条直线形式,而经过merge更新操作远程的提交历史为非直线形式,且因为更新(而不是合并)多了一次merge记录。但是rebase也有很多缺点:

  1. rebase 之后 如果有冲突 解冲突时需把每次的commit都解一遍。

  2. rebase之后没有保留merge记录,意味着没有保存这步的操作,而git的意义不就是保存记录吗?

但是如果我们换一种思路考虑,我们在本地分支中使用 rebase 来更新,是为了让我们的本地提交记录更加清晰可读。(当然, rebase 不只用来合并 master 的改动,还可以在协同开发时 rebase 队友的改动)而主分支中使用 merge 来把 feature 分支的改动合并进来,是为了保留分支信息。

那么如何合适的使用rebase和merge呢?

  • 假如全使用 merge 就会导致提交历史繁复交叉,错综复杂。
  • 如果全使用 rebase 就会让你的commits history变成一条光秃秃的直线。

因此,一个好的commits history,应该是这样的,有合并记录且分支不交错:

*   e2e6451 (HEAD -> master) feture-c finished
|\
| * 516fc18 C.2
| * 09112f5 C.1
|/
*   c6667ab feture-a finished
|\
| * e64c4b6 A.2
| * 6058323 A.1
|/
*   2b24281 feture-b finished

而不应该是这样的,分支交错,看起来很混乱:

*   9f0c13b (HEAD -> master) feture-c finished
|\
| * 55be61c C.2
| *   e18b5c5 merge master
| |\
| |/
|/|
* |   ee549c2 feture-a finished
|\ \
| * | 51f2126 A.3
| * |   72118e2 merge master
| |\ \
| |/ /
|/| |
* | |   6cb16a0 feture-b finished
|\ \ \
| * | | 7b27b77 B.3
| * | | 3aac8a2 B.2
| * | | 2259a21 B.1
|/ / /
| * | 785fab7 A.2
| * | 2b2b664 A.1
|/ /
| * bf9e77f C.1
|/
* 188abf9 init

也不应该是这样的,完全呈一条直线,没有任何的合并记录:

* b8902ed (HEAD -> master) C.2
* a4d4e33 C.1
* 7e63b80 A.3
* 760224c A.2
* 84b2500 A.1
* cb4c4cb B.3
* 2ea8f0d B.2
* df97f39 B.1
* 838f514 init

2. Merge和Rebase的对比以及使用建议

我们通过上述例子得知,rebase和 merge 不是二选一的关系,要协同使用。

当开发只属于自己的分支时尽量使用rebase,减少无用的commit合到主分支里,多人合作时尽量使用merge,一方面减少冲突,另一个方面也让每个人的提交有迹可循。按照上述思路来说,我们按照如下规则可以合理使用rebase和merge操作:

  1. 如果我们只注重于更新操作时,rebase操作可能会更好些,因为没必要多生成一个除了开发外的merge记录,也可以让我们的本地提交记录清晰可读

  2. 当我们要把研发分支合入到主干时,我们更注重的是合并的操作,保留合并的记录,这个时候用merge会好些

在这里插入图片描述

参考文章:https://blog.csdn.net/qq_31960623/article/details/131430880

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】 Python网络请求库大比拼:urllib、urllib2、urllib3与requests

基本原理 在Python中,进行网络请求是常见的任务之一,无论是下载网页内容、获取API数据还是进行文件上传。Python社区提供了多种库来帮助开发者完成这些任务。其中,urllib、urllib2、urllib3和requests是最为流行的几个。了解它们之间的区别对…

促进设备缺陷闭环管理,引入智能巡检系统正当时

经过近些年的应用与发展,智能巡检系统的功能与可操作性已经非常成熟,在巡检工作整合管理、与其他系统调用对接、促进设备缺陷闭环管理方面的优秀表现,使其在安全管理工作中的发挥了超预期的工具价值。 一、巡检工作整合管理 设备巡检管理、安…

QT 编译Lua 动态库,使用Lua脚本混合编程

一,编译Lua动态库 1,下载lua源码 地址:Lua: downloadhttps://www.lua.org/download.html 2,配置 解压lua源码压缩包,里面有个src文件夹,里面的代码就是lua的源码

Paper Survey——3DGS-SLAM

之前博客对多个3DGS SLAM的工作进行了复现及代码解读 学习笔记之——3DGS-SLAM系列代码解读_gs slam-CSDN博客文章浏览阅读1.9k次,点赞15次,收藏45次。最近对一系列基于3D Gaussian Splatting(3DGS)SLAM的工作的源码进行了测试与…

广东肇庆mes系统服务商 盈致科技

广东肇庆MES系统服务商盈致科技为企业提供专业的MES系统解决方案,帮助企业实现生产过程的数字化管理和优化。盈致科技的服务包括但不限于以下方面:MES系统定制开发:盈致科技可以根据企业的实际需求定制开发MES系统,满足企业特定的…

《猎杀:对决》是适合什么样的人玩 Mac电脑怎么玩《猎杀:对决》

《猎杀:对决》是一款集合了生存、竞技和恐怖元素的多人在线游戏,自推出以来受到了广大玩家的热爱。本文将详细探讨《猎杀:对决》适合什么样的人玩以及Mac电脑怎么玩《猎杀:对决》。本文将一一解析,帮助你了解这款游戏是…

maven中央仓库手动下载到本地仓库

1.maven中央仓库网址 maven中央仓库 2.搜索需要的jar包 3.点击坐标mybatis坐标进入 4.winR输入cmd打开命令窗口 mvn dependency:get -DremoteRepositoriesurl -DgroupIdgroupId -DartifactIdartifactId -Dversionversion5.maven本地仓库

判断JavaScript对象是否为空,最佳方法与性能对比

引言:在日常开发中,你是否经常需要判断一个对象是否为空?你知道有哪些高效的方法可以做到这一点吗?今天,我们不仅要探讨这些方法,还要通过性能对比找出最优解。快来看看,你平常用的方法是最佳选…

Python基础教程 第2版 PDF下载

Python基础教程 第2版 PDF下载 在数字时代的浪潮中,Python已成为众多程序员和数据分析师的首选编程语言。对于初学者来说,一本好的Python教程无疑是开启编程之门的金钥匙。本文将为您介绍如何下载《Python基础教程 第2版》的PDF版本,并从四个…

02_初识Nginx

文章目录 一、基础知识1.1 什么是代理服务器1.2 正向代理概述1.3 反向代理概述1.4 负载均衡1.5 动静分离 二、Nginx2.1 Nginx是什么2.2 Nginx的特点2.3 Nginx负载均衡策略2.4 Nginx的Master-Worker模式 参考链接 一、基础知识 1.1 什么是代理服务器 在最简单的场景下&#xf…

Linux安装gpu驱动

安装rpm包 进入官网 ,选择机器的配置和环境。 下载完rpm之后,运行下面的命令。 i) sudo rpm -i nvidia-driver-local-repo-rhel8-550.54.15-1.0-1.x86_64.rpm ii) sudo dnf clean all iii) sudo dnf -y module install nvidia-driver:latest-dkms 安…

数据中心监控管理的实践方案

数据中心是信息存储和处理的核心,扮演着至关重要的角色2。然而,随着数据量的迅速增长,数据中心的监控和管理也变得愈发复杂和重要。保障数据中心的高效运作和安全性,依靠传统的管理方式远远不够。 实时监控数据中心的各项指标&am…

2024/5/30

In recent weeks, Target and Aldi have broadcast price cuts on thousands of items, while Walmart unveiled a new private label lineup of quality “chef-inspired food” mostly in the $5-and-under range. The shift comes as U.S. consumers have been signaling th…

煤矿塌陷位移监测站-全天候监测

TH-WY1煤矿塌陷位移监测站,作为矿山安全监测系统的重要组成部分,其设计、构建和功能均针对煤矿塌陷等地质灾害的实时监测与预警。 煤矿塌陷位移监测站,简称位移监测站,是一种利用先进传感器和仪器设备,对煤矿及周边区…

QML信号连接到c++的槽函数(五)

文章目录 前言一、QML Signal and Handler Event System二、QML信号连接到c++的槽函数代码实例1. 创建一个QML 工程2. 用C++ 实现一个QML Types3. 代码实例4. 运行结果总结参考资料前言 本文主要介绍,如何将QML 中的信号连接到C++ 中的槽函数 软硬件环境: 硬件:PC 软件:wi…

react 使用 富文本编辑器并支持MD,同时支持<Form.Item/>的可控输入

1.分析 <Form.Item label"id" name"id" hidden><Input /> </Form.Item>在react ant 使用中&#xff0c;我们可以看到&#xff0c;Input 输入变化后&#xff0c;值会自动绑定到form实例上&#xff0c;同时&#xff0c;form set值以后&am…

如何用行列视(RCV)获取指标测点当前值

行列视&#xff08;RCV&#xff09;是一款面向生产型企业的综合性数据应用系统&#xff0c;它专注于解决生产领域的指标治理、指标整合以及报表可视化等问题。该系统提供了生产指标统计、指标治理、生产数据整合、生产报表制作以及基于表格的数据分析等一整套功能。因此&#x…

以hive metastore报错举例,远程调试hadoop服务

项目场景&#xff1a; CDH集群CM切换hive元数据库报错&#xff1a; com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at…

设计模式详解(八):外观模式——Facade

目录导航 什么是外观模式现实生活类比实战示例门面模式的好处门面模式源码举例 什么是外观模式 外观模式的英文名是Facade&#xff0c;意思是the front of a building&#xff0c;即建筑物的正面&#xff08;门面&#xff09;&#xff0c;我个人更喜欢翻译成门面模式。门面模式…

步进电机噪音大?抖动厉害?-TMC4361步进闭环方案轻松解决

步进电机的闭环控制&#xff0c;实现与伺服电机功能媲美及超越的特点。在电机控制过程中如果想要高效、更高精度以及绝对的可靠性&#xff0c;我们为您推荐在无传感器及将体积做到最小的更高性价比的驱动方案。 我们都知道&#xff0c;在步进电机无反馈时&#xff0c;电机的高…