# 分支管理 前面提交、推送操作都是在“master”分支进行的。针对一个不断迭代的复杂项目,如果全部都在“master”上操作,版本的结构会乱,其他人看不懂哪个提交是稳定的,是生产下发版本,哪个提交是尚在开发版本。 针对这一问题,下面介绍Git flow分支模型,大家不一定要严格套这个模型。 ## Git Flow 模型的分支如下: - master - develop - feature/xxx - hotfix/xxx - release/xxx 它们的流程图如下: ![](./git_flow.png) ## master - master主分支,代码库应该有一个、且仅有一个主分支,主分支存放最稳定的程序版本 - 所有用于正式生产下发的版本都应该在master分支上发布 - 不能直接在master分支上修改提交,只能从其它分支合并 - 所有在master上的提交应该标记tag ## develop - develop分支是主开发分支 - 用于合并来自feature分支的程序 - 从该分支创建release分支 - 接收来自release和hotfix分支的优化 ## feature - 用于新功能的开发 - 从develop分支签出 - 开发完后合并到develop ## hotfix - 用于紧急修复现场出现的bug - 从master签出 - 完成修复后要双向合并到master和develop ## release - 用于准备版本发布 - 从develop分支签出 - 等测试组测试通过,双向合并到master和develop ## 其他说明 远程仓库应该只存在两个分支,一个是master分支,存放生产环境版本,这个分支的代码总是可靠可用的;另一个是develop分支,这个分支用于日常开发。 hotfix分支、feature分支和release分支都在本地,原则上不能推送到远程仓库。这三种分支都属于临时性需要,使用完以后,应该删除。 develop分支下允许有多个feature分支,且尽量避免冲突;允许在有feature处在开发中的情况下从develop分支拉取到release分支。 # 分支操作 ## 创建分支 在工程目录下右键菜单选择“TortoiseGit”,点击“创建分支”。 ![](./git_create_fork.png) 输入分支名称。“切换到新分支”可选,后面可以手动切换。点击“确认”新分支便创建成功。 ## 切换分支 想要在某个分支上做修改提交,首先要切换到该分支。 在工程目录下右键菜单选择“TortoiseGit”,点击“切换/检出”。 ![](./git_checkout.png) 选择分支,点击确认。 ## 创建标签 master分支提交后要加一个标签,用来表示版本号。 在工程目录下右键菜单选择“TortoiseGit”,点击“创建标签”。 输入标签名称,选择分支即可。 ![](./git_tag.png) ## 分支推送 当某个分支提交的差不多了,就可以推送了。 之前推送的是master分支,现在可以选择本地的其他分支。 ![](./git_fork_push.png) 值得注意的是“包括标签”选项,按照模型,master分支需要标记Tag版本号,master分支推送时勾选该选项可以将Tag同步到服务器。