在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面工作;日常开发应该在另一条分支上完成。我们把开发用的分支,叫做 Develop

工作都在Develop分支上,也就是说,Develop分支是不稳定的,到某个时候,比如1.0版本发布时,再把Develop分支合并到master上,在master分支发布1.0版本;

我们和我们的小伙伴们每个人都在Develop分支上工作,每个人都有自己的分支,时不时地往Develop分支上合并(merge)就可以了。

  • 拉取源:master。
  • 合并目标:无需。
  • 修改:不允许。
  • 生命期:持续。

1.Git创建Develop分支的命令:

$ git checkout -b develop master

2.将Develop分支发布到Master分支的命令:

  # 切换到Master分支
  $ git checkout master
  # 对Develop分支进行合并
  $ git merge --no-ff develop

上一条命令的--no-ff参数是什么意思 ?

默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点 .

下面我们通过例子来演示 :

1.创建并切换到 develop 分支

$ git checkout -b develop master

2.修改readme.txt文件,并提交一个新的 commit:

$ git add readme.txt 
$ git commit -m "add merge"

[develop 15486a1] add merge
 1 file changed, 1 insertion(+), 1 deletion(-)

3.现在,我们切换回master

$ git checkout master

4.准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward

$ git merge --no-ff -m "merge with no-ff" develop

Merge made by the 'recursive' strategy.
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

5.因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。合并后,我们用git log看看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit

*   6e318d8 merge with no-ff
|\  
| * 15486a1 add merge
|/  
*   c77e828 conflict fixed
|\  
| * f64e72b AND simple
* | 9d27459 & simple
|/  
* 2b76425 readme.txt

所以, 验证了 : 使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点 .

results matching ""

    No results matching ""