git学习笔记-(10-分支例子)

一,常规情况下操作

1-1,正常情况下,已经有稳定的代码版本了。
在这里插入图片描述
1-2,现在想要更新项目,就新建一个分支:
在这里插入图片描述
可以看到,head指向master,而新分支也指向当前的版本,只是此时head没有指向它而已。
在这里插入图片描述
1-3,现在我们想在新分支上修改代码,而不影响原有master版本的代码,则可以把head切换到bran1分支上来,这样工作区就变成新分支bran1下的了。
在这里插入图片描述
1-4,现在可以进行代码修改等操作,然后提交新版本。
在这里插入图片描述
可以看到,master已经被保留下来了,而我们此时是在bran1分支下进行操作。
在这里插入图片描述
1-5,如果想切换回到master主分支上来,那就切换呗,不过值得注意的是,一旦切换,工作区中的内容就会变成master对应版本的文件内容了。
在这里插入图片描述
在这里插入图片描述
此时的版本信息是上图这样的。
在这里插入图片描述
实际上,切换分支会变更三个地方,第一个是head的指向,第二个是暂存区,第三个地方是工作区。
所以,每次切换分支前,当前分支一定要是干净的!(全部提交了)
在这里插入图片描述
1-6.为什么说切换分支时当前分支一定要是干净的呢?
仔细考虑一下,如果在当前工作区新建了一个文件,没有纳入git管理,那么一旦切换分支,因为这个文件没有纳入管理,则git管不了它,他就会出现在切换的分支那边,容易污染之前稳定的版本文件。
需要把新建的文件纳入git管理(add)之后才不会出现这种情况。
这种情况发生在文件第一次出现(未纳入git管理)时才会发生,如果已经纳入git管理了,又进行了变更而没有暂存和提交,则无法切换分支,会报错。
1-7,要避免这个问题也简单,只要你切换分支前检查下当前分支是干净的就不会出错。
在这里插入图片描述

二,一个小案例

在这里插入图片描述
此时的项目是这样的:
在这里插入图片描述
2-1,主分支的代码是稳定的,不能动,所以创建一个新分支:
之前我们创建一个新分支,然后让head指针指向它,现在有一个新的写法,可以一步到位:
git checkout -b "新分支名字"
此时假如我们正在解决日常的事物,新建了一个分支来进行代码的编写:
在这里插入图片描述
2-2,开始日常事务中解决#53的bug ,假设现在已经做了一半的工作。
在这里插入图片描述

就在这时候,有个紧急bug需要你去处理,但是你已经在53分支上做了一半工作了,这工作能删除嘛?显然不能,那就先停下来。
先把它提交一下:
在这里插入图片描述
再来看分支 情况:
在这里插入图片描述
2-3,现在就可以切换到主分支解决紧急问题了:
在这里插入图片描述
2-4,同样的,为了保证不影响主分支的代码。处理这个紧急bug又需要新建分支。
在这里插入图片描述
2-5,现在才开始着手解决这个紧急的bug。
在这里插入图片描述
在这里插入图片描述
如上图红圈,出现了两个分支,目前head指针指向正在修改bug的分支上。
假如此时已经解决了这个bug。
2-6,修复bug后合并到主分支。

1. 切换回到主分支。
2. 然后让主分支合并hotbug分支。

在这里插入图片描述
现在再来查看:
在这里插入图片描述
这种合并方式是快进合并,会产生一个问题:iss53分支现在过期了。。也就是说iss53分支上还没有修复bug。里面的主分支代码还是之前有bug的版本。
2-6,代码的bug解决完毕了,hotbug分支没有存在的意义了,那就把它删除掉吧。
在这里插入图片描述
你以为这样就结束了???
不,现在的主分支是修复了bug没错,但是此时的主分支仅仅在你自己的电脑上存在,中央管理的代码库里还是旧的,这时就需要你更新一下啦。
需要将本地修改的代码推到服务器上面去。(现在github还没学,先这样)
现在就相当于这个bug已经解决掉了,现在需要再切换回iss53继续今天的事务。
2-7,切换回当天事务:
目前这个iss53才完成了一半,但是为了切换出去紧急修复bug,提交了一次。
在这里插入图片描述
在这里插入图片描述
此时iss53已经被修改完成。现在要合并的话,又需要切换到主分支,然后合并:
2-7,依旧是快进合并
在这里插入图片描述
你会发现这个版本已经修复了bug。
值得注意的是,因为我们修复bug和修复iss53各自独立进行,所以合并只是简单的进行取并集而已。但若是两种更改都对同一个文件进行变更,此时合并会出现什么情况?
因为是相同文件,git又不知道你合并后要删除哪些,保留哪些,此时合并后,就会发生冲突,不过他会告诉你冲突的文件,只要点进去,修复一下冲突,再提交一下就可以了。
此时的合并叫做:典型合并
在这里插入图片描述
在这里插入图片描述
打开冲突哪个文件,哪个代码留下来,哪些删除。沟通完之后再add,commit就可以了。
2-8,这样一来,紧急bug修复好了,当天的事务iss53也好了:
在这里插入图片描述
现在分支少,还挺清晰,真正工作中,分支很多,超级难看。
现在为止,都是你自己在和自己解决代码版本啦,冲突啦这些问题,你自己心里有谱,还好解决。实际工作中的话,就是各种同事各种版本,要是发生冲突,就得和同事积极沟通了。说不过就打他,打到对方改为止(滑稽脸)
所以说,进公司后,第一步就是把同事打一顿,啊,不是,是先创建属于自己的分支。然后要新增代码啦,增加功能啦啥的,就在自己的分支上搞,就把问题变成自己和自己玩了,避免天天被同事打。
等你自己负责的功能完成了,再整合到主分支上即可。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值