Git flow 是一种先进的git 版控制模型,可以针对各种类型项目开发进行管理

git flow 相关网站:https://github.com/nvie/gitflow



1、安装git flow



首先,在A(server)、B(custom)、C(custom)上安装git flow再进行其他步骤

安装方法

$ git clone https://github.com/nvie/gitflow.git //下载git flow

$ cd gitflow //切换至git flow 目录

$ git submodule init //submodule 初始化

$ git submodule update //submode 升级

$ sudo make install //安装git flow

$ sudo cp git-flow /etc/bash_completion.d/ //设定git flow 的 completion



或者使用

$ sudo apt-get install git-flow



2、本地进行git flow 开发



在A、B、C端都安装git flow 后,在A服务端git init后git flow init -d ,创建默认git flow

B、C端 git clone后,再在本地git flow init -d



$ git branch 查看B端branch

develop

master

可见,现在所在的branch为develop,即开发分支

在该分支上直接进行开发后尝试push,可正常push

在C端pull一下尝试,可正常将develop branch上的数据pull下来



B端进行新功能开发

$ git flow feature start update_eq

$ git branch

develop

feature/update_eq

master



blablabla….进行相关开发后add修改的文件并commit



$ git flow feature finish update_eq

blabla相关git flow 的提示信息,大致内容为,已经切换至branch分支,并合并branch develop 和 feature/update_eq



$ git push

相关push正常的提示信息



我们用C端进行git pull,发现可正常pull下来相关数据,并且代码正常



但是这样做,是直接将代码放入了develop branch中,有些时候,可能某些代码需要team leader进行相关review后才可进行merge到develop 分支中。git flow提供了一个类似功能



$ git flow feature start new

$ git branch

develop

* feature/new

master



blablabla 进行相关开发后add修改的文件并commit



$ git flow feature publish new



页面提示,远程端已创建新的branch feature/new,并且代码已正常push上去



我们使用C端pull一下后查看远程branch

$ git pull

$ git branch -a

发现有 feature/new 这个branch



但是查看develop这个log,发现没有new上次的修正

我们切换到feature/new 这个branch

$ git checkout feature/new

$ git log

我们可以发现刚在B端在feature/new这个branch上的开发的代码

team leader进行review后

$ git checkout develop

$ git merge feature/new

提示merge成功,如果不成功手动修正冲突代码

完成后。在B、C端删除本地和远程多余分支

本地删除

$ git branch -d feature/new

远程

$ git push origin :feature/new

git push的时候需要当前没有任何未提交的commit

此时执行git push其实就是push空的提交到远程的:feature/new这个branch

相当于删除该branch