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合并就看不出来曾经做过合并。