Git分支管理策略

通常,合并分支时,如果可能,Git会用"Fast Forward"模式,但是在这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用"Fast Forwar"模式,Git就会merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

下面我们实战一下--no-ff方式的merge:

首先,任然创建dev分支并切换到dev分支上:

$ git checkout -b dev
Switched to a new branch 'dev'

修改readme.txt文件,添加并提交

$ cat readme.txt
master分支内容
添加dev分支内容
master分支上的合并测试内容
分支合并测试

dev分支--no-ff方式的merge

$ git add readme.txt

$ git commit -m "dev commit"
[dev 4f4f23a] dev commit
1 file changed, 1 insertion(+)

切换到master分支上,用no-ff模式合并

LV@LV-PC MINGW32 /c/gitskill (dev)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 5 commits.
(use "git push" to publish your local commits)

LV@LV-PC MINGW32 /c/gitskill (master)
$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以要就加上-m参数,把commit描述写进去

合并后,我们用git log看看分支历史:

LV@LV-PC MINGW32 /c/gitskill (master)
$ git log --graph --pretty=oneline --abbrev-commit
* 8e64728 merge with no-ff
|
| * 4f4f23a dev commit
|/
* f3d8f1e branch merge
|
| * cccee34 newbranch first commit
* | 4bb4c5a master branch merge test
|/
* 0d0bbca dev first commit
* d5aea29 master first commit
* 023ee21 Initial commit

分支策略:

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

首先,master分支应该是非常的稳定的,也就是仅仅用来发布新的版本,平时不能在上面干活。

那在哪里干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到了某个时候,比如要发布一个版本的时候,

再把dev分支合并到master上,在master分支上发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时的往dev分支上合并就可以了。

Git的分支十分强大,在团队开发中应该充分应用。合并分支时,加上--no-ff参数就可以用普通的模式合并,合并后的历史有分支,能看出来了曾经做过合并,

而fast forward合并就看不出来曾经做过合并。

原文地址:https://www.cnblogs.com/LvLoveYuForever/p/5524004.html