一、分支管理策略

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

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

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

[[email protected] git_test]# git checkout -b dev
Switched to a new branch 'dev'
[[email protected] git_test]# git branch
* dev
  master

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

[[email protected] git_test]# echo "new file" >> code2.txt
[[email protected] git_test]# git add code2.txt 
[[email protected] 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并进行一个提交。

[[email protected] git_test]# git checkout master
Switched to branch 'master'
[[email protected] git_test]# echo "*******">>code.txt 
[[email protected] git_test]# git add code.txt 
[[email protected] 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会自动创建一次新的提交。
git--分支管理策略
将第一行内容替换为新版本的版本名,如下:
git--分支管理策略
保存后会,自动提交。
(6)使用分支命令查看分支信息
git--分支管理策略
(7)删除dev分支。

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

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

[[email protected] git_test]# git checkout -b dev
Switched to a new branch 'dev'

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

[[email protected] git_test]# echo "66666666">>code.txt 
[[email protected] git_test]# git add code.txt 
[[email protected] git_test]# git commit -m 'add 666'
[dev 5236145] add 666
 1 file changed, 1 insertion(+)

(3)切换回master分支。

[[email protected] git_test]# git checkout master
Switched to branch 'master'

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

[[email protected] 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后就像这样:
git--分支管理策略

git--分支管理策略
思考:在什么情况下,应该禁用快速合并呢
在下篇博文Bug分支中,就有讲述

相关文章:

  • 2021-08-01
  • 2021-12-14
  • 2021-09-25
  • 2021-04-01
  • 2021-12-26
  • 2021-09-14
  • 2021-05-23
猜你喜欢
  • 2021-11-16
  • 2021-07-12
  • 2021-07-28
相关资源
相似解决方案