git flow的介绍和使用

作用

git flow 定义了一套项目的分支管理模式,让分支的管理不再混乱

git flow定义的几个分支介绍

  • master: (只允许存在一个) 当前生产代码所在分支,除项目创建之初提交一次代码之外,不能再对该分支主动提交代码,后续只能通过合并release分支的方式,获取代码的变更
  • develop: (只允许存在一个) 主开发分支,基于master分支创建,不能直接向该分支提交代码,只能通过合并feature分支的方式得到最新的代码变更
  • feature: (可以多个)新功能分支. feature分支都是基于develop创建的,开发完成后会合并到develop分支上. 项目成员在拿到自己的工作任务之后,就新建一个自己的feature分支,功能开发完毕,再将该分支合并到develop
  • bugfix: (可以多个)基于develop分支创建而成,用于修复release分支中的bug,bug修复之后,合并到release分支
  • release: (只允许存在一个) 基于develop分支创建而成,该分支的代码用于给测试进行测试。不能直接修改该分支的代码,只能通过合并develop分支的方式,获得最新的代码变更
  • hotfix: (只允许存在一个) 该分支的代码基于master分支创建而来,用于紧急修复线上问题

git flow操作流程

1. 创建项目,并使用git和git flow初始化

mkdir demo-01
# git初始化
git init
# git flow初始化
git flow init

2. 在feature分支下完成功能开发

# 新建一个 feature/login_fun 分支(执行完下面这一条命令之后,会先创建该分支,再切换到该分支)
git flow feature start login_fun

# 进行代码编写,最后使用git commit -m "xxx" 将所有代码提交到本地仓库

# 下面这条命令会先将 feature/login_fun 的代码合并到 develop 分支,并切换到 develop 分支,
# 最后再删除 feature/login_fun 分支
git flow feature finish login_fun

3. 创建 release 分支,供测试同事测试

# 如下命令会基于本地develop分支的代码创建 release/1.0.0
git flow release start 1.0.0

4. 测试发现bug,在bug系统新建bug之后,开发根据bug内容完成bug修复

# 下面这条命令会基于本地的 develop 分支,创建 bugfix/3000 分支,并切换到 bugfix/3000 分支
git flow bugfix start 3000

# 开发在 bugfix/3000 分支下,完成bug修复以及自测,然后执行 git commit -m "xxxx" 提交代码更新

# 下面这条命令会将 bugfix/3000 的内容合并到 develop 分支
# 注意此时可能会有冲突,如果有冲突,则会将 bugfix/3000 的代码合并到 develop 分支, 
# 然后自动会切换到 develop 分支, 此时需要在 develop 分支手动解决git 冲突,然后执行 git commit.
# 如果合并分支时,没有冲突,则会在合并完成之后,自动切换到 develop 分支, 
# 然后自动删除 bugfix/3000 分支
git flow bugfix finish 3000

# 在冲突解决完之后,需要手动删除 bugfix/3000 分支, 此时由于该分支已执行finish操作,
# 所以删除分支时无需 -f 参数
git flow bugfix delete 3000

5. 重新发布release分支

注意:release分支在git flow中只允许又一个,因此需要先删除原来的那个release分支,重新创建一个

# 下面这条命令会强制删除 release/1.0.0 的分支.
# 因为 release/1.0.0 尚未finish,所以只能通过-f参数,要求强制删除
git flow release delete 1.0.0 -f

# 如下命令会基于本地develop分支的代码创建 release/1.0.0
git flow release start 1.0.0

6. 所有功能测试通过,将release分支代码合并到master分支

# 切换到master分支
git checkout master

# 拉取master分支最新代码
git pull

# 执行下面这个命令之后,会将 release 分支的代码合并到 master 分支,
# 并要求输入一段tag描述,然后创建 1.0.0 的tag
git flow release finish 1.0.0

git flow常用操作

查看git flow的所有子命令

git flow

# 通过上面的命令,可以得到下面的输出结果

usage: git flow <subcommand>

Available subcommands are:
   init      Initialize a new git repo with support for the branching model.
   feature   Manage your feature branches.
   bugfix    Manage your bugfix branches.
   release   Manage your release branches.
   hotfix    Manage your hotfix branches.
   support   Manage your support branches.
   version   Shows version information.
   config    Manage your git-flow configuration.
   log       Show log deviating from base branch.

开始一个指定类型的分支

如: 开始一个bugfix的分支
git flow bugfix start 自定义分支名称
如上操作会基于本地的develop分支,创建一个新的bugfix分支

结束一个指定类型的分支

如: 结束一个bugfix的分支
git flow bugfix start 自定义分支名称
如上操作会将自定义分支名称合并到develop分支

强制删除某个类型下的某个分支

如: 强制删除release/0.0.2分支
git flow release delete 0.0.2 -f

你可能感兴趣的:(前端-项目管理,前端,git)