git--分支管理策略

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cx55887/article/details/85338529

一、分支管理策略

通常,合并分支时,如果可能,git会用fast forward模式,但是有些快速合并不能成而且合并时没有冲突,这个时候会合并之后并做一次新的提交。
比如这样的场景

  • 第一步:创建一个新分支,在新分支中创建一个文件,在文件中写入内容,然后提交
  • 第二步:在主分支中的code.txt中写入一行内,然后提交

在这种情况下,虽然主分支和dev分支都有修改操作,但是并不是修改同一个文件,因此可以正常完成合并;但是此时执行合并的时候,无法执行快速合并,而是git会自动将dev分支中的内容合并到master分支,然后执行提交。
(1)创建切换到dev分支下。

[root@test-zookeeper-go-016003 git_test]# git checkout -b dev
Switched to a new branch 'dev'
[root@test-zookeeper-go-016003 git_test]# git branch
* dev
  master

(2)新建一个文件code3.txt编辑内容如下,并提交一个commit。

[root@test-zookeeper-go-016003 git_test]# echo "new file" >> code2.txt
[root@test-zookeeper-go-016003 git_test]# git add code2.txt 
[root@test-zookeeper-go-016003 git_test]# git commit -m "add a new file"
[dev 3b235ed] add a new file
 1 file changed, 1 insertion(+)
 create mode 100644 code2.txt

(3)切换回master分支,编辑code.txt并进行一个提交。

[root@test-zookeeper-go-016003 git_test]# git checkout master
Switched to branch 'master'
[root@test-zookeeper-go-016003 git_test]# echo "*******">>code.txt 
[root@test-zookeeper-go-016003 git_test]# git add code.txt 
[root@test-zookeeper-go-016003 git_test]# git commit -m "add a new line ***"
[master dd6ffc2] add a new line ***
 1 file changed, 1 insertion(+)

(4)合并dev分支的内容到master分支。

# git merge dev

(5)出现如下提时,这是因为这次不能进行快速合并,所以git提示输入合并说明信息,输入之后合并内容之后git会自动创建一次新的提交。
在这里插入图片描述
将第一行内容替换为新版本的版本名,如下:
在这里插入图片描述
保存后会,自动提交。
(6)使用分支命令查看分支信息
在这里插入图片描述
(7)删除dev分支。

# git branch -d dev
Deleted branch dev (was 3b235ed).

关于禁用快速合并
如果要强制禁用fast forward模式,git就会在merge时生成一个新的commit,这样的好处是:从分支历史上就可以看出分支信息。
(1)创建并切换到dev分支。

[root@test-zookeeper-go-016003 git_test]# git checkout -b dev
Switched to a new branch 'dev'

(2)修改code.txt内容,并提交一个commit。

[root@test-zookeeper-go-016003 git_test]# echo "66666666">>code.txt 
[root@test-zookeeper-go-016003 git_test]# git add code.txt 
[root@test-zookeeper-go-016003 git_test]# git commit -m 'add 666'
[dev 5236145] add 666
 1 file changed, 1 insertion(+)

(3)切换回master分支。

[root@test-zookeeper-go-016003 git_test]# git checkout master
Switched to branch 'master'

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

[root@test-zookeeper-go-016003 git_test]# git merge --no-ff -m "不使用快速合并" dev
Merge made by the 'recursive' strategy.
 code.txt | 1 +
 1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
(5)合并后,我们用git log看看分支历史:
可以看到,不使用Fast forward模式,merge后就像这样:
在这里插入图片描述

扫描二维码关注公众号,回复: 4703569 查看本文章

在这里插入图片描述
思考:在什么情况下,应该禁用快速合并呢
在下篇博文Bug分支中,就有讲述

猜你喜欢

转载自blog.csdn.net/cx55887/article/details/85338529