远程仓库里面有多个远程分支和本地的多个分支

1 什么情况下需要新建一个分支

分支说白了就是一个新的版本,比如需要往主线分支中加一个feature,或者修改一个bug,最好是新建一个分支,开发好了,测试好了,然后再合入主线。

新建一个分支是一种开发方法论,是一种非常保守,非常可靠的开发方法。

2 远程仓库为什么需要多个远程分支

远程仓库需要多个分支主要是为了多个人协作。如果是一个人开发的话,是不需要多个远程分支的,只需要在本地创建多个分支即可。

多个人协作时,有一个主线分支,然后某个人为了加入一个特性,从主干分支拉出一个分支用于开发,然后另外一个人拉了一个分支用于开发,这样的话,远程就有3个分支了。但是,必须以主干分支为核心,也就是说,各个非主干分支在开发测试完成之后,要最重合入主干分支。

3 一个仓库里面有多个分支,这些分支之间的异同是什么

一个仓库的基本组成单位是commit,不同的分支有相同的commits,然后有不同的commits。不同的分支从主线的不同时间点分出来。

4 在本地如何操作远程仓库里面的多个远程分支

4.1 从远程分支拉一个本地主线分支

如果直接git clone 远程仓库的话,就把所有的分支都下载下来了。那么远程的这个分支已经拉下来了,现在要为它创建一个本地分支的话,直接切换到该branch,然后git branch XXX,这样XXX这个本地分支就是基于该远程分支创建的,它的commit链和远程分支的一样。或者,git checkout -b [localbranch] [remotename]/[remotebranch]。这样,这个localbranch就是基于remotebranch创建的。无论是哪一种方法创建,都需要再加一个tracking,git checkout --track origin/serverfix。这样commit可以直接push到所tracking的远程分支上去。

肯定是不能直接在本地的远程分支上开发的,因为本地看到的远程分支是为了fetch server上别人提交的commit用的。

逻辑是这样的,远程分支fetch了的话,就可以把远程的commit都同步到本地仓库,然后可以merge到本地对应的tracking分支了,然后就可以git push到对应的远程分支了。可见fetch server中的远程分支中最新的commits,这是在本地看到的远程分支的唯一用途。

4.2 只是把远程的指定分支拉下来

git clone -b 2.4 --single-branch https://github.com/Itseez/opencv.git opencv-2.4
解释:
2.4是要拉的这个branch,-b和--single-branch都是git clone命令的选项。“https://github.com/Itseez/opencv.git”是这个远程仓库,
最后的opencv-2.4是拉下来的这个分支的名字。

4.3 将远程次分支合入主线分支的方法

首先,在本地分别同步这两个分支;

其次将本地次分支版本合入本地主线分支;

最后把本地版本提交到服务器端和并入主线分支即可。

5 如何操作本地的多个分支

第一,本地的分支最终的归宿是服务器端的某个分支。也就是说,本地分支来自于某个远程分支,最终也要合并到某个远程分支。也就是说,本地分支里面有一个分支跟踪远程分支。然后在这个分支的基础上,我们还可以再创建分支,用于新特性开发等。也就是说,有一个本地主线开发分支,这个主线开发分支来自于某个远程分支。

第二,如果同时进行多个远程分支开发的话,每个远程分支对应一个本地的开发主线分支,每个本地开发主线分支又可以有自己的多个分支。

6 如何图示本地的多个分支之间的关系?如何图示远程的多个分支之间的关系

分支是由commit构成的,各个分支有自己的commit链,无论是本地的还是远程的,同一个仓库中的所有分支的commit链都有重合部分。

 图示很难,因为一个项目commit有几千几万次,有的项目有几十万次commit。所以,多人开发的时候一定要按步就班。

git是提供了图是工具的,可以图示,就算几十万次,它也是有一个提交流的,用“git log --graph”就可以了。

7 分支的使用

无论是远程仓库有多个分支还是本地仓库有多个分支,使用的时候,必须要有一个主线分支,然后各个分支从主线分支开始往外延伸,各个非主线分支最重的归宿是主线分支,最重的产品来自于主线分支。

原文地址:https://www.cnblogs.com/hustdc/p/6442290.html