1. GitFlow介绍
1.1 为什么要有GitFlow
在多人协同开发的情况下,会有对同一个仓库进行频繁的添加修改内容。而每个开发者的习惯不同,导致代码版本管理起来很麻烦。
例如:两个开发者同时在同一分支上进行开发,那他们拿到的初始版本是相同的,先提交的代码会被后提交的代码覆盖,导致协作出现矛盾。
1.2 什么是GitFLow
GitFlow简单来说就是多人开发项目时的一种规范,严格规定了每个成员应该如何建立、合并分支模型。
1.3 GitFLow中常见的分支
Master分支:主分支。用于存放最稳定的正式版本,该版本一般面向其他用户开发,每次Master分支上更新都需要加上代表版本的标签。master分支只能接受其他分支的合入,不能直接修改。
Develop分支:开发分支。用于更新开发的新功能。Develop分支需要拉取自master分支,当功能开发完后,再并入release分支,等待发布上线。
Feature分支:功能分支。用于开发单个新功能。feature分支拉取自develop分支,开发完后再并入develop分支,若新功能不适合,则可以废弃掉。若该新功能只有一个开发人员负责,则可以只保存在本都,不push到远程仓库。
Release分支:预发分支。用于正式发布前的测试。release分支拉取自develop分支,当功能开发完即将发布时,需要用release分支来进行测试和小型的bug修复。测试完后再将其并入master分支,进行发布,还需要并入develop分支,将修复的bug反馈给develop分支。这样可以在准备发布的同时,开发分支不会被影响。
HotFix分支:热修复分支。用于紧急修复严重bug。当正式版本中有严重的bug时,需要从标签版本中拉取hotfix分支,修复完后合并会master分支和develop分支。
2. GitFlow的使用
2.1 GitFlow的安装
Windows 安装git-flow 详细步骤_gtiflow安装-CSDN博客
2.2 GitFLow的整合使用
在idea中安装GitFLow的插件。第一次使用的时候需要初始化。
第一个为master分支,一般为默认。第二个选项选择develop分支,插件将自动创建develop分支。
选择菜单中可以选择要新建的分支, 并指定该分支从哪个分支中拉取,写明该分支的名称。确认后会自动创建并切换到该分支。
publish feature会将新的功能分支push到远程仓库。
finish feature会将该功能分支合并回develop分支后删除该功能分支,并切换回develop分支。
finish release会将预发分支合并到master分支和develop分支后删除该预发分支,并给master分支打上标签,切换回develop分支。
finish hotfix同预发分支,知识hotfix拉取自master分支,而预发分支拉取自develop分支。
注意:在合并feature分支时,需要保证develop分支为最新版本;在合并release分支时需要保证master分支和develop分支也为最新版本。防止合并时发生冲突。
3.Git中的命令
Git fork和Git clone
Git fork是将别人远程的仓库复制到自己的远程仓库。
Git clone是将远程的仓库克隆到自己的本地仓库。
Git cherry-pick
Git cherry-pick是将部分commit合并到当前分支,通过指定commit id可以将指定的commit合并,支持同时指定多个commit。
Git merge是将其他分支上的所有commit合并到当前分支。