git合并分支

目录

一,用idea的git插件合并

一.merge(合并)

二,TortoiseGit 小乌龟合并分支方法


一,用idea的git插件合并

idea合并分支有两种方式:一个是merge,另一个是rebase(不要碰)
idea进行git操作千万不要碰两个按钮,一个是rebase(变基),一个是VCS,这俩千万不要碰,一碰就死,要问为什么,因为我不会☺☺☺

一.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分支)

第五步:有冲突解决冲突再合并,没冲突就直接合并了.

注意:

1.将c分支合并到master分支, 不管怎么解决冲突,c分支的内容是不受影响的,改变的都是master的内容.

2.将c分支合并到master分支,c分支并没有被删除,也没有自动消失,c分支好好的,c分支什么都没有改变.

到此结束

下面是我的实验

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.注意,冲突 仅限于同一行的代码,而且必须满足 冲突的三个页面的数据都不同. 
 

二,TortoiseGit 小乌龟合并分支方法

1、首先当前分支 “提交” 并 “推送” 到服务器上,比如开发分支 dev 合并到 master 上

2、右键 > “切换分支” 到要合并的分支 master

175110_iGMo_1994934.png

3、拉取最新 master 分支,然后 右键 选择 合并,选择 dev 分支,勾选合并,确定

175236_rCLt_1994934.png

4、确定后可能会提示有错误,这是需要解决冲突,右键  “解决冲突”

175845_JCpV_1994934.png

5、右键 “编辑冲突”,编辑后保存提示选择解决冲突,

175941_w5OE_1994934.png

6、解决完冲突,提交并推动到服务器,合并完成,记得切换回自己的分支继续开发哦

到此结束!!!

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值