当前位置:   article > 正文

Git Flow_git flow init

git flow init

一、Git Flow引入背景

在使用Git的过程中如果没有清晰流程和规划,否则每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护,Git版本管理同样需要一个清晰的流程和规范。Vincent Driessen为了解决这个问题提出了 A Successful Git Branching Model(也就是Git Flow) 一旦安装了Git Flow,你将会拥有一些扩展命令。这些命令会在一个预定义的顺序下自动执行多个操作。Git Flow并不是要替代 Git,它仅仅是非常聪明有效地把标准的 Git 命令用脚本组合了起来。

二、Git Flow的安装

对于Windows用户而言,通过Git for Windows来安装Git Flow是被推荐的方法。

看到了上述这张图,就感觉非常熟悉,就知道Git for Windows是什么了吧。在Git for Windows的2.6.4版本及以上版本中包含了Git Flow(AVH版本),所以只要安装了Git for Windows就相当于安装好了Git Flow(AVH版本)。

如果想确认当前环境中是否已经安装了Git Flow,可通过下述命令:

git flow version

根据是否可以查询到Git Flow的版本号来判断当前环境是否已经安装Git Flow

三、git flow init 命令

提示:当前Git Flow的版本为1.12.3 (AVH Edition)

前面已经安装好了Git Flow,如果想在项目中使用Git Flow,首先需要使用 git flow init 命令进行初始化,如下所示切换到项目的根目录下面,然后使用下述命令:

git flow init

从返回结果中可以看出当前项目已经被Git Flow初始化过了,那么针对这种情况我们可以使用git flow init -f 命令来强制再次进行初始化。

git flow init -f

Which branch should be used for bringing forth production releases?

   - develop
   - main

Branch name for production releases: [main]

上述这段引导配置表示本地环境中有两个分支:develop和main, 我们应该选择设置哪个分支做为生产版本,一般情况下是选择 main或者master 分支作为生产版本,当前环境下我们肯定是选择main分支,因为项目中没有命名为master的分支。

确定好了生产版本的分支以后,我们可以将本地环境中对应分支的名称写到Branch name for production releases: [main] 的后面,如果不填写(直接回车)的话,则默认会将 [main] 作为生产版本的分支。

Which branch should be used for integration of the "next release"?
   - develop
Branch name for "next release" development: [develop]

上述这段引导配置表示如果本地环境中存在develop分支,Git Flow会将其作为一个可选项提示我们可以将这个分支作为开发版本,我们可以将本地环境中对应分支的名称写到Branch name for "next release" development: [develop] 的后面,也可以重新命名一个新的分支(没有提示可选项的情况下)。当然如果不填写(直接回车)的话,则默认会将 [develop] 作为开发版本的分支。

注意:一旦确定好了开发版本的分支,在所有的初始化配置完成以后,本地项目会自动切换到开发分支中

How to name your supporting branch prefixes?
Feature branches? [feature/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]

上述这段引导配置表示 如何命名所支持的分支前缀,例如Feature分支的前缀名为 feature/。如果想修改Feature分支默认的前缀名,则只需要在Git Flow初始化配置时在Feature branches? [feature/]的后面填写新的前缀名,如果采用默认前缀的话,直接回车就可以。

一般情况下Feature、Bugfix、Release、Hotfix分支的前缀名是不需要变动的,保持默认的就行。

尽管Git Flow允许我们在分支上配置了一些命名规则,但还是强烈建议使用默认的命名机制,并且一步一步地确定下去。

git flow init -d

四、分支的模式

Git Flow模式会预设两个分支在仓库中:

main:作为生产版本的分支是不能直接被操作,而是在其它指定的特性分支中进行操作,然后再合并到此分支中

develop:当开始一个新的功能分支时,它将是开发的基础。另外,该分支会汇集所有已经完成的功能,并等待被整合到 main 分支中。

五、git flow feature start 分支名

git flow feature start 分支名

如上图所示,使用 git flow feature start x1 命令基于develop分支创建了一个名为 “feature/x1” 的分支,在这个分支中我们可以完成一些相关的功能开发。

六、git flow feature finish 分支名

基于上述操作,我们在新签出的feature/x1分支中完成了相应的功能以后,可以使用下述明命令:

git flow feature finish 分支名

即使用 git flow feature finish x1 命令会将当前分支中的操作整合到develop分支中,然后删除当前的Feature分支,并且切换到develop分支

Git Flow除了在feature分支上可以操作外,release和hotfix分支上也是可以操作的,不过当前测试环境不具备,暂时就先搁置了,可以参考下面这个地址进行测试实践:

https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/git-flow

七、git flow 规范中各个分支的作用

main:作为生产版本分支,该分支不做任何开发,由其它分支进行合并代码操作

develop:作为开发分支,基于Master分支进行构建,最终功能开发完成确认无误后将其代码合并到Master分支

feature:该分支用于一个新需求功能点开发,需要基于develop分支来创建一个feature分支,当功能做完自测无误以后就可以将该分支合并到develop分支,同时删除该feature分支

hotfix:该分支用于修复生产生产发现中的bug,当我们在生产中发现新的Bug时候,我们需要基于main分支创建一个hotfix分支,在Bug处理完成并测试成功以后,我们需要将在该分支上所做的操作合并回master和develop分支,然后在master分支上打一个Tag(标签),所以Hotfix的改动会进入下一个Release。

release:基于develop分支构建一个release分支,我们在release分支上测试、修改Bug等(这个属于项目新需求功能开发、测试阶段)(记住:一旦打了release分支之后,不要再从develop分支上合并新的改动到release分支)发布release分支时,合并Release到main和Develop, 同时在main分支上打个Tag记住Release版本号,然后可以删除Release分支了。

总结:基于main和develop,根据不同场景构建其它三个分支,任务完成后,代码合并,删除其它三个分支。

八、IDEA中Git的常用操作

Local Branchs:本地分支

Remote Branchs:远程分支

1.本地当前分支标识

黄色标签在哪里,就表示当前本地处于什么分支中,如下图所示,我们目前处于本地的master分支

2.本地分支切换

如果我们想切换到本地的dev分支,需要先在Local Branches中选中dev,然后单击鼠标左键就会出现一个如下图所示的界面,在Git Branches的左边会出现一个选项框,我们点击Checkout,本地就可以切换为dev分支

3.从远程分支dev打个本地dev分支

首先先选中远程分支origin/dev,然后再点击鼠标左键,然后再点击左边的Checkout AS

这时就会弹出一个框,来询问我们为本地分支的取名

点击OK以后在Local Branches中就会出现一个新的本地分支

4.分支比较

当前本地分支为dev,我们选中Remote Branches中的dev分支,点击鼠标左键,就会出现如下所示的内容:

点击Compare With就可以进行分支比较

5.分支代码合并到主干(测试是可行方案

首先需要切换到本地master主干上,在remote branch上选择dev分支,点击后面的三角图标,展开之后选择Merge into current

合并过程可能会出现主干代码和分支代码冲突,需要解决冲突,合并完成之后如下图提示信息:

此时合并合并完成只是在自己电脑本地,还没有提交到远程服务器,最后将合并好的代码push到远程即可大功告成

Local Branches模块的本地分支部分也会有Merge into current功能,但是不推荐从这个位置进行合并,最好合并的是已经提交到远程仓库的代码

6.删除本地分支

在如下的local Branches中选择要删除的本地分支,选择子菜单中的delete菜单,即可删除。注意:在删除本地的某一个分支之前,需要先切换到其它本地分支

7.创建远程分支

第一步:先从远程将代码获取下来,IDEA将本地分支切换为master分支

第二步:点击“New Branch”

在弹出框中为新的分支取一个名字,并且选中“Checkout branch”,这样在创建分支的时候本地分支就会自动切换为我们刚刚所创建的分支

第三步:新建的分支push到远程即可

8.打tag

IDEA中给分支版本打Tag的步骤

第一步:通过“VCS”-->“Git”-->“Tag”路径打开我们打Tag的界面

标签和分支的名称必须以字母开头,并且只能包含字母数字字符

第二步:然后通过“VCS”-->“Git”-->“Push”来选择将Tag进行提交

如何拉取打了Tag的代码?

答:可通过下述选项命令输入Tag名称即可检出代码

下述为git tag命令的介绍

通过“View”-->“Tool Windows”-->“Terminal”路径打开我们项目路径的控制台

列出git中现有的所有标签:git tag

创建标签,-a加标签,-m加标签注释:git tag -a v1.4 -m version 1.4

创建轻量级标签,不用-a,-m等参数:git tag v1.4-lw

查看相应标签的版本信息,并连同显示打标签时的提交对象:git show v1.4

如果上传到服务器时不能上传tag,可加上--tags命令:git push --tags

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/629603
推荐阅读
相关标签
  

闽ICP备14008679号