Java程序员学习资料—Git Flow

  • 时间:
  • 浏览:1
  • 来源:大发彩神UU快三_大发神彩UU快三官方

在Java多多任务管理器 开发中的定制开发规范,我应该 把项目正规高效的跑起来。引入 Git 版本控制,Git-Flow 便成为了首选。今天动力节点Java学院来带你了解一下。

一、为這個 使用 git-flow

当在团队开发中使用版本控制系统时,商定有一另两个统一的工作流程是至关重要的。 Git 的确还不都可以在各个方面做什么都有有事情,然而,可能在你的团队中还这么能形成有一另两个特定有效的工作流程,这么混乱就将是不可处里的。

基本套路:让他定义有一另两个完正适合你买车人项目的工作流程,可能使用有一另两个别人定义好的。

二、安装 git-flow

亲们使用 Homebrew 来安装 git-flow:

1.brew install git-flow

很久 ,通过 git-flow 来初始化项目:

1.git flow init

这很久 就会有這個 配置的操作,先默认操作:

1.Initialized empty Git repository in /Users/jartto/Documents/git-flow-demo/.git/

2.No branches exist yet. Base branches must be created now.

3.Branch name for production releases: [master]

4.Branch name for "next release" development: [develop]

5.

6.* Please tell me who you are.

7.

8.Run

9.

git-flow 模式会预设有一另两个主分支在仓库中: 1. master 非要用来含有产品代码 亲们非要直接工作在這個  master 分支上,什么都有有在這個 指定的,独立的特性分支中。

不直接提交改动到 master 分支上也是什么都有有工作流程的有一另两个一块儿的规则。

2. develop 在等你进行任何新的开发的基础分支 当你结束英文有一另两个新的功能分支时,它将是开发的基础。另外,该分支也汇集所有可能完成的功能,并停留被整合到 master 分支中。

13.to set your account's default identity.

14.Omit --global to set the identity only in this repository.

15.

16.fatal: unable to auto-detect email address (got 'jartto@bogon.(none)')

17.fatal: Not a valid object name: 'master'.

18.error: pathspec 'develop' did not match any file(s) known to git.

19.

20.How to name your supporting branch prefixes?

21.Feature branches? [feature/]

22.Release branches? [release/]

23.Hotfix branches? [hotfix/]

24.Support branches? [support/]

25.Version tag prefix? []

需用强调這個 :git-flow 什么都有有封装了 git 的命令。

什么都有有在亲们初始化的很久 ,对仓库并这么這個 改动,什么都有有创建了几块分支。当然,可能你我应该 继续使用 git-flow ,这么只需用简单的停用 git-flow 的命令即可,不需用修改可能删除任何文件。

为了验证一下,亲们看下目前的分支,执行:

1.git branch

输出:

1.* develop

1.mkdir assets

中放去一张图片,修改完毕,提交并结束英文 hotfix:

1.git add .

2.git commit -m 'fix: assets img'

3.git flow hotfix finish 'jartto'

看一下 git-flow 有這個 操作:

1.Switched to branch 'master'

2.Merge made by the 'recursive' strategy.

3.assets/git-flow.png | Bin 0 -> 25839 bytes

4.1 files changed, 0 insertions(+), 0 deletions(-)

5.create mode 5000644 assets/git-flow.png

6.Switched to branch 'develop'

7.Merge made by the 'recursive' strategy.

8.assets/git-flow.png | Bin 0 -> 25839 bytes

9.1 files changed, 0 insertions(+), 0 deletions(-)

10.create mode 5000644 assets/git-flow.png

11.Deleted branch hotfix/jartto (was a734849).

12.

13.Summary of actions:

14.- Latest objects have been fetched from 'origin'

15.- Hotfix branch has been merged into 'master'

16.- The hotfix was tagged 'jartto'

17.- Hotfix branch has been back-merged into 'develop'

18.- Hotfix branch 'hotfix/jartto' has been deleted

查看一下目前的 Tag 状态:

1.git tag

正是亲们里边去掉 的有一另两个标签:

1.0.1.0

2.jartto

总结一下: 1.完成的改动会被合并到 master 中,同样也会合并到 develop 分支中,什么都有有就还不都可以确保這個 错误不让再次总出 在下有一另两个 release 中。 2.這個  hotfix 多多任务管理器 将被标记起来以便于参考。 3.這個  hotfix 分支将被删除,而且切换到 develop 分支上去。

八、git-flow 流程图示

恭喜你,到这里你可能完成了 git-flow 的基本流程。为了更加整体的理解工作流,亲们来看看下面这张流程图: 



Java

清清楚楚,是完正都是和亲们里边的过程一模一样。

九、参考

动力节点Java架构师班宽度剖析Java底层原理,热门技术深入探讨,前沿技术深入解读,大项目实战重构,从0到1做架构,从全局思维出发,带你把控大型项目中别人忽略的重要细节节点,站在巨人肩膀上学习架构师,带你领会架构师不一样的视野

四、明确分支功能

1. master 分支 最为稳定功能比较完正的随时可发布的代码,即代码开发完成,经过测试,这么明显的 bug,不都可以合并到 master 中。请注意永远不须在 master 分支上直接开发和提交代码,以确保 master 上的代码老是可用;

2. develop 分支 用作平时开发的主分支,并老是处在,永远是功能最新最全的分支,含有所有要发布 到下有一另两个 release 的代码,主要用于合并這個 分支,比如 feature 分支; 可能修改代码,新建 feature分支修改完再合并到 develop 分支。所有的 feature、 release 分支完正都是从 develop 分支上拉的。

3. feature 分支 這個 分支主什么都有有用来开发新的功能,一旦开发完成,通过测试没這個 的难题,亲们合并回 develop 分支进入下有一另两个 release 。

4. release 分支 用于发布准备的专门分支。当开发进行到一定程度,可能说快到了既定的发布日,还不都可以发布时,建立有一另两个 release 分支并指定版本号(还不都可以在 finish 的很久 去掉 )。开发人员还不都可以对 release 分支上的代码进行集中测试和修改 bug。(這個 测试,测试新功能与已有的功能是是不是有冲突,兼容性)完正完成经过测试这么這個 的难题后,将 release 分支上的代码合并到 master 分支和 develop 分支。

5. hotfix 分支 用于修复线上代码的 bug 。从 master 分支上拉。完成 hotfix 后,打上 tag 亲们合并回 master 和 develop 分支。

需用注意:

所有开发分支从 develop 分支拉。

所有 hotfix 分支从 master 拉。

所有在 master 上的提交都必要要有 tag,方便回滚。

倘若有合并到 master 分支的操作,都需用和 develop 分支合并下,保证同步。

master 和 develop 分支是主要分支,主要分支每种类型非要有有一另两个,派生分支每个类型还不都可以一块儿处在多个。

五、关于 Feature 分支

在 Git-flow 中,通过使用 Feature 分支,使得亲们在同一时间开发多个分支更加简单。 亲们接到了有一另两个 Test1 需求,使用 feature start 来启动:

git flow feature start test1

当亲们结束英文有一另两个新的 feature 开发后:

1.Switched to a new branch 'feature/test1'

2.

3.Summary of actions:

4.- A new branch 'feature/test1' was created, based on 'develop'

5.- You are now on branch 'feature/test1'

6.

7.Now, start committing on your feature. When done, use:

8.

又总出 了新這個 的难题: 1.这是這個 意思: Bumpthe version number now! 2. last-minute fixes 又是這個 意思?

那接下来亲们要做這個 呢?不着急,按照提示一步步来。

亲们修改了代码,进行add,和 commit 很久 ,执行:

1.git flow release finish 0.1.0

這個 过程里边可能总出 异常:

1.fatal: no tag message?

2.Tagging failed. Please run finish again to retry.

输出:

1.Switched to branch 'develop'

2.Merge made by the 'recursive' strategy.

3.test.js | 0

4.1 file changed, 0 insertions(+), 0 deletions(-)

5.create mode 5000644 test.js

6.Deleted branch release/0.1.0 (was 0426707).

7.

8.Summary of actions:

9.- Latest objects have been fetched from 'origin'

10.- Release branch has been merged into 'master'

11.- The release was tagged '0.1.0'

12.- Release branch has been back-merged into 'develop'

13.- Release branch 'release/0.1.0' has been deleted

这里主要有几块操作: 1.首先, git-flow 会拉取远程仓库,以确保目前是最新的版本。 2.而且, release 的内容会被合并到 master 和 develop 有一另两个分支中去,什么都有有不仅产品代码为最新的版本,而且新的功能分支也将基于最新代码。 3.为便于识别和做历史参考, release 提交会被标记上這個  release 的 Tag。 4.清理操作,版本分支会被删除,而且回到 develop。

七、Hotfix 线上代码

可能线上代码有這個 的难题,这很久 你需用紧急修复呢?

亲们还不都可以使用 git flow hotfix :

1.git flow hotfix start jartto

看一下执行了這個 :

1.Switched to a new branch 'hotfix/jartto'

2.

3.Summary of actions:

4.- A new branch 'hotfix/jartto' was created, based on 'master'

5.- You are now on branch 'hotfix/jartto'

6.

7.Follow-up actions:

8.- Bump the version number now!

9.- Start committing your hot fixes

10.- When done, run:

11.

1.vi main.js

写入 console.log('hello jartto'); 接着提交亲们的变更:

1.git add .

2.git commit -m 'feat: add console.log'

好了,现在亲们开发完了,结束英文 feature 开发:

1.git flow feature finish test1

控制台输出了:

1.Switched to branch 'develop'

2.Updating d975789..27e920c

3.Fast-forward

4.main.js | 1 +

5.1 file changed, 1 insertion(+)

6.create mode 5000644 main.js

7.Deleted branch feature/test1 (was 27e920c).

8.

9.Summary of actions:

10.- The feature branch 'feature/test1' was merged into 'develop'

11.- Feature branch 'feature/test1' has been removed

12.- You are now on branch 'develop'

这里做了几件事情: 1.将 feature/test1 分支合并到了 develop 分支; 2.删除了 feature/test1; 3.切换到 develop 分支;

需用注意: git-flow 使用的命令是:

1.git merge —no-ff feature/test1

什么都有有,在亲们移除 feature 分支很久 ,是不让丢失任何历史记录的。

可能你还不了解 --no-ff 相关知识,还不都可以先看看:Git merge 的 –ff 和 –no-ff。

接着,亲们看一下变更记录:

1.git log --oneline

输出:

1.27e920c (HEAD -> develop) feat: add console.log

2.d975789 (master) Initial commit

六、release 分支-版本发布

当亲们开发完毕,需用去发布新版本的很久 ,亲们还不都可以使用:

1.git flow release start 0.1.0

控制台会有這個 提示:

1.Switched to a new branch 'release/0.1.0'

2.

3.Summary of actions:

4.- A new branch 'release/0.1.0' was created, based on 'develop'

5.- You are now on branch 'release/0.1.0'

6.

7.Follow-up actions:

8.- Bump the version number now!

9.- Start committing last-minute fixes in preparing your release

10.- When done, run:

11.

11.Try 'git flow help' for details.

可能我想看 feature 相关命令呢?

1.git flow feature help

使用规范就会列出来:

1.usage: git flow feature [list] [-v]

这里补充這個 ,亲们还不都可以通过 help 命令来查看用例。

1.git flow help

输出如下:

1.usage: git flow

2.

3.Available subcommands are:

里边说到的这有一另两个分支被称作为长期分支,它们会存活在项目的整个生命周期中。

而這個 的分支,类似针对功能的分支,针对发行的分支,仅仅什么都有有临时处在的。它们是根据需用来创建的,当它们完成了买车人的任务很久 就会被删除掉。