6

GitFlow 代码管理模型实战

 8 months ago
source link: https://blog.51cto.com/ivandu/9200755
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

GitFlow 代码管理模型实战

Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。

master分支存放所有正式发布的版本,可以作为项目历史版本记录分支,不直接提交代码。仅用于保持一个对应线上运行代码的 code base。

develop分支为主开发分支,不直接提交代码。

feature分支为新功能分支,feature分支都是基于develop创建的,开发完成后会合并到develop分支上。同时存在多个。

release分支基于最新develop分支创建,当新功能足够发布一个新版本(或者接近新版本发布的截止日期),从develop分支创建一个release分支作为新版本的起点,用于测试,所有的测试bug在这个分支改。测试完成后合并到master并打上版本号,同时也合并到develop,更新最新开发分支。(一旦打了release分支之后不要从develop分支上合并新的改动到release分支),同一时间只有1个,生命周期很短,只是为了发布。

hotfix分支基于master分支创建,对线上版本的bug进行修复,完成后直接合并到master分支和develop分支,如果当前还有新功能release分支,也同步到release分支上。同一时间只有1个,生命周期较短。

GitFlow 代码管理模型实战_git

简化的流程图:

GitFlow 代码管理模型实战_github_02
GitFlow 代码管理模型实战_新版本_03

二 操作步骤

2.1 克隆远程仓库到本地

git clone http://[email protected]:8888/demo/GitFlow.git
git config credential.helper store # 记住密码,后续提交无需再次输入密码。

2.2 配置提交用户信息

进入仓库所在目录,配置用户信息。用户信息包括用户名及邮箱,如果是全局配置,加上–global选项。

git config user.name "mrivandu"
git config user.email "[email protected]"

2.3 develop 分支

develop 分支与 master 分支如下图:

GitFlow 代码管理模型实战_git_04
git add .
git commit -m "init"
git branch develop  master
git push -u origin develop

2.4 feature 分支

提交流程如图:

GitFlow 代码管理模型实战_docker_05

通过develop新建feaeure分支

git checkout -b feature develop

feature 分支可以只存在本地仓库,也可以推送至远程服仓库:

git push -u origin feature

在本地仓库修改相关文件:

git status
git add .
git commit -m "modify"

完成 feature 分支的开发后,合并到 develop 分支

git pull origin develop
git checkout develop
#--no-ff:不使用fast-forward方式合并,保留分支的commit历史
#--squash:使用squash方式合并,把多次分支commit历史压缩为一次
git merge --no-ff feature
git push origin develop

feature 分支合并到 develop 后,删除本地分支(也可以保留不删除):

git branch -d some-feature

如需删除远程feature分支:

git push origin --delete feature

2.5 release 分支

提交流程如图:

GitFlow 代码管理模型实战_用户信息_06

检出 release 分支:

git checkout -b release-0.1.0 develop

完成 release 分支的开发,合并回 master 分支和 develop 分支:

git checkout master
git merge --no-ff release-0.1.0
git push
git checkout develop
git merge --no-ff release-0.1.0
git push

删除本地 release 分支(亦可保留):

git branch -d release-0.1.0

删除远程仓库 release 分支(亦可保留):

git push origin --delete release-0.1.0

合并 master/devlop 分支之后,打 tag:

git tag -a v0.1.0 master -m "demo version"
git push --tags

2.6 hotfix 分支

提交流程如图:

GitFlow 代码管理模型实战_github_07

完成 hotfix 分支,合并至 master 分支:

git checkout -b hotfix-0.1.1 master
git checkout master
git merge --no-ff hotfix-0.1.1
git push

完成 hotfix 分支,合并至 develop 分支:

git checkout develop
git merge --no-ff hotfix-0.1.1
git push

删除 hotfix 分支:

git branch -d hotfix-0.1.1
git push origin --delete  hotfix-0.1.1  # 如果本地已向 远程仓库推送,可以使用该命令删除远程 hotfix 分支

完成 hotfix,打 tag:

git tag -a v0.1.1 master
git push --tags
# 删除本地 tag: git tag -d v0.1.1
# 删除远程 tag:git push origin :refs/tags/v0.1.1

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK