git学习笔记(十五)--git的分支

分支是代码管理非常重要的工具。在实际的项目实践中,单一分支的开发模式肯定是不可取的,我们遇到的问题可能各式各样。

为什么我们需要分支:

  1. 一个成功的软件项目需要多个开发周期,会发布多个版本,每个版本都可能会发现BUG,这需要对历史版本进行修改;
  2. 一个有前瞻性的项目管理,新老版本是同步进行的,两个版本混在一起开发?不现实
  3. 项目可能有不同的客户定制,不同的需求放在一起开发,当然不合适
  4. 项目团队中每个人的任务是不同的,在模块化开发日趋成熟的现在,分工合作各不干涉已经是主流,在代码的协作上不应有过多的冲突

 

git分支的三种应用:

发布分支  ----在软件开发周期中,从主线上分离出来的分支,负责每一个不同版本的开发维护,并将自己修改BUG后的分支融入主分支,使得后续版本不会出现前面的问题

特性分支  ----在软件开发过程中,针对有些特色功能而设定的分支,可以加入主线,也可以单独开发后留待使用

卖主分支  ----在版本库中创建一个专门和上游定制的代码进行同步的分支,一旦有上游代码发布,就检入到卖主分支中

 

git 分支命令:

  git branch                                    列出本地分支

  git branch <branchname>                            创建分支,以默认HEAD指向的提交为起点

  git branch <branchname> <start-point>                      以某个提交为起点,创建分支

  git branch -d <branchname>                            检查该分支是否已经被合并,若合并,则删除该分支;没有合并,则不删除

  git branch -D <branchname>                            强行删除该分支

  git branch -m <oldbranch> <newbranch>                     检查该newbranch是否被用,若已经使用,则不改名称;若没有则改名字

  git branch -M <oldbranch> <newbranch>                     强行改该分支的名字

 

 git分支使用的一个简单实例:


 

1. 首先还是创建共享库和两个工作者,记得修改名字和邮箱:

 

2. 在user1目录下创建分支,并切换到该分支上:

 

3.在分支上工作完成后,推送该分支到共享库:

 

4.切换到master分支,把该功能融合到master上来,再次发布:

 

git另外一个使用实例的简要说明:

情景描述:

假设我们已经发布了版本v1.0(用tag标示),但是现在遇到两个bug,需要两个工作人员分别处理,user1解决bug1,user2解决bug2,可以创建分支用来解决bug,解决完后发布版本v1.01,然后把该修改融入到主线中


在user1下:

    git branch fixbug v1.0          创建分支

    git checkout fixbug            切换分支

    完成处理工作               处理bug

    git add . && git commit -m "...."      本地提交

    git push origin fixbug          远程推送

 

在user2下:

    git fetch                   取得发布分支

    git checkout -b fixbug origin/fixbug    对于远程分支,需要基于该远程分支创建本地分支

    处理工作                  处理bug

    git tag  -m "..."  v1.01          创建tag

    git push                    推送到远程服务器

 

在user1下:

    git pull                  取回v1.01版本

    git checkout master            切换到master

    git log --oneline fixbug          显示该发布分支的历史

    git cherry-pick fixbug^1         从中拣选出需要的提交,放到master上来

    git cherry-pick ...             继续拣选

    git add . && git commit -m "..."      主线也完成了bug的修复

    

注意,在分支的使用过程中,可以有很多种组合方式,是先创建,再共享,然后分别工作;还是先创建后工作,再共享;等等都有不同的处理方式,只要明白branch的原理,使用起来是非常方便的。

个人认为,最好事先可以定一下小组分工,管理者做的工作就是创建,共享,拉回,发布;而程序员的工作就是拉回,修改,提交;大家权限一样,反而会适得其反,最好有详细的分工配置。 

posted on 2012-07-31 16:34  melburg  阅读(235)  评论(0)    收藏  举报