相关分支
1、 Master
顾名思义,既然名字叫Master,那么该分支就是主分支的意思。在git repo下主分支的职责主要就是负责记录stable版本的迭代,当在beta版本的项目或是开发版本的项目得到了充分的验证之后,我才能将分支并入master分支。master分支永远是production-ready的状态,即稳定可产品化发布的状态。
2、Develop
这个分支就是我们平常开发的一个主要分支了,不管是要做新的feature还是需要做bug fix,都是从这个分支分出来做。在这个分支下主要负责记录开发状态下相对稳定的版本,即完成了某个feature或者修复了某个bug后的开发稳定版本。
3、Feature branches
这是由许多分别负责不同feature开发的分支组成的一个分支系列。new feature主要就在这个分支系列下进行开发。当我在一个大的develop的迭代之下,往往我们会把每一个迭代分成很多个功能点,并将功能点分派给不同人的人员去开发。每一个人员开发的功能点就会形成一个feature分支,当功能点开发测试完毕之后,就会合并到develop分支去。
分支管理策略
1、 准备工作
从master上拉出develop分支
git checkout -b develop
105516_VQTR_1781981.png
如图,当前develop和master的head都指向同一个节点
2、 功能点开发
假设现在有一个功能点,指派给A同学进行开发了。首先,他应该从最新develop分支中拉出一个feature分支,假设为该feature分支命名为feature1。
$ git checkout -b feature1
Switched to a new branch 'feature1'
$ git branch
develop
* feature1
master
于是,我们便创建并切换到了feature1分支。
$ ls
1.txt 2.txt
$ echo "feature1" >> 1.txt
现在A同学开始了他的开发,他将feature1写入了1.txt,这样他就完成了该功能点。那么之后他应该进行commit,并提交QA进行相应的功能测试
$ git status
# On branch feature1
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: 1.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git add -A
$ git commit -m 'feature1'
提交之后,我们可以很容易的看到当前的一个分支节点网络的情况,如图。
105744_3qaZ_1781981.pngA同学开发的feature1分支有了更新,已经超前于develop分支,因此我们现在需要对feature1分支进行合并操作。
$ git checkout develop
Switched to branch 'develop'
$ git merge feature1
Updating 2ea6fb8..8d30443
Fast-forward
1.txt | 1 +
1 file changed, 1 insertion(+)
因为当前我们并没有发生冲突,所以develop分支的head只是单纯的forward到了feature1分支的节点上。于是,我便完成了分支的合并,当前的分支网络如下图。
105916_qg7R_1781981.png3、 处理冲突(略)
网友评论