Git 二

第四章 分支管理

1       创建分支

分支,顾名思义,类似于SVN的trunk和branch,虽然用了这么久没感觉出来SVN分支有什么实际意义(纯粹为了吐槽而吐槽~)。

如图4.1.2的命令,先创建了分支”dev”,再切换到分支”dev”;当然,也可以使用如图4.1.2的命令一条完成。


图 4.1.1 创建分支并切换


图 4.1.2 创建分支并切换

 

2       查看分支状态

当项目比较多,亦或写代码很长时间后,当我们切回git的时候有的时候估计也会比较茫然,现在是什么状况?好吧,使用如图4.2.1的命令,查看一下当前的分支吧。星星标记的当然就是当前所处的分支。


图 4.2.1 查看分支

 

3       分支的合并

当在子分支得瑟够了之后,就需要将子分支的成果合并到master分支了。输入图4.3.1的命令就ok了。


图 4.3.1 分支合并

 

4       删除分支

合并之后,子分支除非就地继续修改,否则由于时间轴的更迭,内部文件基本就失去了失效性,所以,merge完成后,我们就华丽丽地使用图4.4.1的命令吧。


图 4.4.1 删除分支

 

5       解决冲突

当分支出现修改文件F并且提交。与此同时,公司同事出现一个大神直接修改了Master分支的F,更神的是还提交了修改。好吧,当分支操作完成,merge的时候,那么就爆炸了,效果如图4.5.1所示。


图 4.5.1 版本冲突

提示很明显,版本出现冲突,合并失败了。

然后呢,我们打开文件如图4.5.2,一般文件中都会出现红框框部分的东东,SVN的同学们,是不是十分怀念呢?

这部分当然,需要手动修改了。

从”<<<<<< HEAD”到”==========”之间是Master分支的修改部分。

从”=========”到”>>>>>>>XXXX”是分支版本的修改部分。

孰是孰非,请自己斟酌。


图 4.5.2 版本冲突

当然,有的时候也会有突发状况,写着写着,领导冲过来大吼一嗓子,”把XXbug在XX之前修正过来,要不今天谁都别吃饭了!”为了吃饭,大家不要慌张,由于代码没有写完,不可能将当前分支提交给master,那应该怎么办呢?首先,可定不能在当前分支上改,至于为什么?你猜;所以,一般会在master或者是第一主分支上修改,如果修改了,提交了,当我们要再切换回来的时候,请看图4.5.3,由于有冲突文件,是无法切换的。当然,总会有修改的master文件F和branch中的文件A不是同一个文件的时候,但这毕竟是少数。那应该怎么办呢?


图 4.5.3

当然,编写git的少年现在没有饿死,因为他们用了下面图4.5.4这条命令:


图 4.5.4 存储

这条命令,就可以将branch分支未处理完的文件进行无parent的commit,可以简单理解为存储起来了,这种存储,可以在切换到master后,对文件进行无视冲突性修改,依旧可以切换回代码编写的分支。既然是存储了,那么就得想办法取出来,参见如图4.5.5命令就可以了:


图 4.5.5 取环境

 

6       多人合作

随着项目开发需求的不断变迁,有的时候可能多个人负责一个分支,也有可能一个主分支下,分出多个子分支。这个时候,就需要对其进行差异查询、处理了。


图 4.6.1 远端查询

图4.6.1命令,可以查询远端状态。当然,也可以使用图4.6.2的命令,查看更详细一些的信息。


图 4.6.2 远端查询

再温习一下推送和克隆,可以使用图4.6.3的命令对远端推送本地分支,红框部分可以更换要推送的目的分支。


图 4.6.3 推送分支

使用图4.6.4的克隆命令进行分支的获取。


图 4.6.4 克隆分支

使用图4.7.5命令将远端分支与创建的本地分支进行关联。


图 4.6.5 创建本地的远端关联分支

当编写完项目之后,正常会推送到远端服务器上,当推送发现服务器已经被同事修改并上传了某些文件,此时出现差异性问题。这个时候使用图4.6.6的命令,将远端的分支拉取到本地。


图 4.6.6 拉去远端分支

如果拉取失败,提示本地分支未和远端分支建立关联,那么需要使用图4.6.7进行关联。


图 4.6.7 本地分支与远端进行关联

 

7       标签管理

如图4.7.1,对当前分支下tag进行查看。


图 4.7.1 查看标签

当要对某个分支的某个状态进行打标签,先切换到该分支,查询出当前提交的版本号,


图 4.7.2 打标签

如图4.7.2,是将某个提交的版本进行打标签,如果后面没有版本号,那么就是对当前的版本进行打标签。

通过图4.7.3显示打标签节点的具体信息。


图 4.7.3 显示标签信息


图4.7.4 添加tag信息

当然,也可以使用图4.7.4的命令对标签添加一些注释的信息。


图 4.7.5 对tag进行签名

可以使用图4.7.5的命令对tag进行签名,如果签名不成功,请确认一下自己本地是否安装了GnuPG。


图 4.7.6 删除标签

如图4.7.6的命令,删除标签。


图 4.7.7 推送标签

如图4.7.7就是使用创建好的标签向远端推送。

如图4.7.8是推送所有本地标签的方法。


图 4.7.8 推送所有标签

如果标签已经推到送到了远端,如果想要删除的话,就可以使用图4.7.9的命令了。


图 4.7.9 删除远端标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值