Git 04 ---用Idea合并git分支
idea合并分支有两种方式:一个是merge,另一个是rebase
一.merge(合并)
现在我们有一个master分支和一个C分支,我们想把C分支合并到master上
第一步:分别update和push两个分支,保证两个分支的代码都是最新的
(为什么要push呢,只commit不push不行吗, 这个我也不清楚,还没研究到这,目前反正只要合并我都push到远程仓库)
第二步:切换到master分支
注意切换分支前一定要把C分支的改动先commit或者直接push到远程仓库,要不然你会发现切换到master分支会直接看到C分支的改动,很烦,切记这个大坑!
第三步:右键--Git--merge
第四步:选择你要合并的origin/C分支
origin 是 Git 克隆的仓库服务器的默认名字。
(为什么不选C呢,我也不知道,可能他俩本身就是一个,反正准确点就选这个origin/C分支)
第五步:有冲突解决冲突再合并,没冲突就直接合并了.
注意,将c分支合并到master分支, 不管怎么解决冲突,c分支的内容是不受影响的,改变的都是master的内容.
到此结束
下面是我的实验
C分支一但合并到master,下次合并就失效了?并不是这样的,其实你想看的那个三个页面的冲突是有条件, 必须是master分支和C分支都修改了同一行代码,这个时候,就会弹出来3个页面,让你选择.
也就是说,一行代码,在master和C合并前,merge和C都对这行代码做了改动,这个时候才会显示冲突,让你手动选择.
案例一:
C是从master分出来的,分的那一刻,他俩的初始状态是相同的,那行代码都是sout(7777),
这时master把那行代码改为了'sout(1111)', C把那行代码改为了'sout(2222)',
这个时候你把C合并到master的时候就会报冲突. 如下图:
你可以选择左边的'sout(1111)',最后点Accept Left;
也可以选右边的'sout(2222)',最后点Accept Right;
也可以选中间的sout(7777),你也可以自己去中间的代码修改成你想要的结果.最后都是点apply
案例二:
跟着案例一,就是C合并到master后,现在master是sout(7777),C是sout(2222),两个的这行代码不一样,现在我第二次把C合并到master,会发生什么情况,
注意,C第一次合并到master后,他俩的代码相较于第一次合并那刻后,都没有改动过,
你猜下,第二次C合并到master后,是否会显示冲突界面, 如果不显示冲突界面,那么这个合并的最后结果是C的sout(2222),还是master的sout(7777)呢?
结果如下::::::结果就是合并的时候C分支这个选项就直接没有了!!!!
那现在我来改动一下C分支,把sout(2222)改为sout(3333),再合并,会发生什么样子
冲突界面再次发生!!这次我选择中间的sout(2222),,结果就是第二次合并后master由sout(7777)变成了sout(2222),,,然后C分支不受影响还是sout(3333)!
然后我把C分支的sout(3333)改为和master相同的数据sout(2222)呢, 结果会是什么呢?
结果::::::结果就是直接它自己就合并了!什么冲突都没有, 也是,都是相同的代码,哪来的冲突呢.
总结:以把C合并到master后为基准,master为111,C为222
1,master分支和C分支合并后,master做修改,但是只要是C没有修改,那么C就不能合并到master分支.
2,master分支和C分支合并后,master做修改,C分支也修改,这时合并,冲突出现,
如:master由111改为555,把C由222改为333,这时合并冲突显示为555,222,333.
3,master分支和C分支合并后,master不做修改,并,只有C分支做修改,这时合并,冲突出现,
如:master为111,把C由222改为333,这时合并冲突显示为111,222,333.
4,可以看到C合并到master,那么master这一方自己想怎么改就怎么改,但是只要C分支修改了,那么就有冲突了.
5,冲突的左边永远为master现在的版本的内容,冲突的中间永远为C合并到mater后的初始未改动版本, 冲突的右边永远为C改动后的现在的版本.
7.注意,冲突 仅限于同一行的代码,而且必须满足 冲突的三个页面的数据都不同.
二.rebase(衍合)
等明天再研究,我这学习进度太慢了,妈的,因为我TM加班到8点多,到10点还要忙自己的事情,操了!!
Git 04 ---用Idea合并git分支相关推荐
- git提交代码,合并同步分支
使用git开发往往会有很多分支,比如自己在分支A上面开发,别人在分支B上面开发,当自己需要提交代码时,需这样操作: 前提是在自己的分支上操作下面指令. 第一步: git add . //作用就是将修改 ...
- 通过idea的Git使主干项目合并到分支中(主干同步到分支)
正常来说,而且现在网上的教程都在说,分支同步到主干的办法,今天因为项目需求,需要将主干的项目全部合并到分支上,正常的都会,反过来就不会了,这个问题,我也是找了很久才知道解决办法,当然如果有人能知道其他 ...
- git——学习笔记(三)分支管理
一.创建.合并分支 每次提交,git都往后走一格,串成一跳时间线,head指向的是分支,分支指向提交.master是主分支,dev是另一条分支,分支就像指针一样,合并.删除分支时,修改的都是指针,工作 ...
- [转]git图解(3):分支操作
本文转自:https://www.jianshu.com/p/342a9f8db004 title_img.png git 的分支是它最明显的特性, 大部分人听别人推荐使用git都会听到"g ...
- 廖雪峰Git教程笔记与总结 -- Git简介、常用命令、分支管理
本文主要用于记录阅读Git教程 - 廖雪峰的官方网站后的一些心得笔记,并且对git一些常用命令做一个整理总结. 本文要点分为:1.Git简介:2.Git常用命令:3.Git分支管理. 一.Git简介 ...
- Git的具体使用,包括安装Git工具,把Git和IDEA结合,使用分支
文章目录 Git的具体使用,包括安装Git工具,把Git和IDEA结合,使用分支 git安装及环境配置 git的必要配置 git config -l git config --system --lis ...
- git add remote_收藏向 | Git命令与原理速查手册
Git简单介绍 Git是一个分布式版本控制软件,最初由Linus Torvalds创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计. Git工作流程以及各个区域 Work ...
- 已经无法合并还报请合并git_GIT 分支管理:创建与合并分支、解决合并冲突
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- git rm -r --cached_【Git】工作中99%能用到的git命令
分支操作 git branch 创建分支 git checkout -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v ...
最新文章
- 发布Wear OS by Google开发者预览版
- Drools可执行模型还活着
- MATLAB的PLOT函数线型设置及横坐标为字符串的代码实例
- 在eclipse中运行正常的java项目放到tomcat中报错的解决办法
- mysql to_minute_mysql的时间转化
- $Django redis内存数据库 (知识回顾cmd切换目录)
- 中国内置扬声器市场趋势报告、技术动态创新及市场预测
- 空间说说秒赞java_人生靠反省,Java靠泛型
- 【C++标准库】字符串
- Vue项目中安装axios
- Dynamics CRM 365 - 零基础入门学习后端插件的调试方法
- scala异常处理、提取器(Extractor)、文件IO
- 转:爬虫入门 手写一个Java爬虫
- 统信UOS系统连接Windows系统共享的打印机
- 如何用excel搭建数据模型,销售数据管理软件
- java 最短遍历路径_凯文培根游戏的最短路径图遍历
- Spring Cloud Hoxton 版本微服务项目搭建 admin 监控客户端
- Web开发基础_Servlet学习_0011_Servlet中的多线程安全问题与Servlet运行原理
- 月入2千到5万,是skycc营销软件在帮忙
- 数据归一化和代码实现