gitflow实践

gitflow实践

git 概念原理

git 包含三种状态:

  • 已暂存 (staged)
  • 已修改 (modified)
  • 已提交 (committed)

git 版本控制系统(VCS)

git 版本号 (x.y.z)

  • X = 主版本号 (重大升级, 不同主版本的库之间是不兼容的)
  • Y = 次版本号 (增量升级,增加一些新的接口但保留原有接口.高版本号的库向后兼容低版本的库)
  • Z = 维护版本号 (仅修复 Bug) (修改错误,改进性能等,不添加新接口,也不更改接口.在主版本和次版本相同的前提下,不同维护版本之间完全兼容)

git 分支管理(gitflow)

一个成功的分支模型

gitflow 部署安装

部署安装 gitflow 工具(https://github.com/nvie/gitflow)

curl -sS https://github.com/nvie/gitflow/blob/develop/contrib/gitflow-installer.sh | bash

SourceTree 支持 gitflow 工作流

sourcetree

img

gitflow 分支说明

  • production(master) 分支[master, master-enshi, master-enshi]
    当需要固话某个固定版本的时候(独立设置 production 分支 (master-enshi-v1, master-enshi-v2)[固化版本]
    发布分支, 这个分支为最近发布到生产环境的代码分支, 这个分支只能从其他分支合并(hotfix 分支, release 分支)所有在 master 分支上的 commit 应该打 tag

img

  • develop 分支[develop]
    主开发分支, 包含所有要发布到下一个 release 的代码.
  • feature 分支(?)[feature-*]
    这个分支主要用来开发新的功能, 一旦开发完成, 我们就将它合并到 develop 分支, 合并完分支后一般会删掉这个 feature 分支.也可以保留.

img

  • release 分支(?)[release-*]
    当你需要发布一个新版本的时候, 我们基于 develop 分支创建一个 release 分支,完成 release (测试, 修改Bug) 之后合并到 master 分支和 develop 分支, 同时在 master 分支上打个 tag 记住 release 版本号,然后可以删除 release 分支.

img

  • hotfix 分支(临时分支)[hotfix-*]
    我们需要基于 master 分支创建一个 新的hotfix 分支,进行 bug 修复, 完成 hotfix 后, 合并回 master 分支和 develop 分支, 同时在 master 上打一个 版本.

img

gitflow 代码示例

a. 创建develop分支

git branch develop
git push -u origin develop
  • b. 开始新Feature开发
git checkout -b some-feature develop # -b 依据 develop 创建一个新分支
# Optionally, push branch to origin:
git push -u origin some-feature

# 做一些改动
git status
git add some-file
git commit
  • c. 完成Feature
git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop

git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature
  • d. 开始Release
git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit
  • e. 完成Release
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

git branch -d release-0.1.0

# If you pushed branch to origin:
git push origin --delete release-0.1.0

git tag -a v0.1.0 master
git push --tags
  • f. 开始Hotfix
git checkout -b hotfix-0.1.1 master
  • g. 完成Hotfix
git checkout master
git merge --no-ff hotfix-0.1.1
git push

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

git branch -d hotfix-0.1.1

git tag -a v0.1.1 master
git push --tags

gitflow 工具

安装

mac

brew install git-flow

Debian/Linux

apt-get install git-flow

图解 gitflow 的使用

img

gitflow 命令与 git 命令的对应

Gitflow Workflow

git commit 规范

单个 commit 解决单个问题

commit 的格式

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
<BLANK LINE>
<revert>

格式示例

fix(route): 404 页面跳转不正确

主体内容

Closes #123, #245, #992

commit 格式详解

Header (必填)

Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。

  • type (必填)
    用于说明 commit 的类别,只允许使用下面7个标识。

feat fix 需要添加到 change log 中, 其他的视情况而定.

feat:   新功能,新特性(feature)
fix:    修复bug
docs:   文档(documentation)
style:  代码格式修改(比较小的代码变动, 功能保持不变)
test:   测试用例修改,或增加测试代码
refactor:代码重构,内部处理逻辑/算法逻辑发生较大改变.(即不是新增功能,也不是修改bug的代码变动)
chore:  构建过程或辅助工具的变动, 比如构建流程, 依赖管理等.(无法判断的提交推荐用这个)
  • scope (按需填写,可不填)
    用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
  • Subject (必填)
    提交代码的简短描述, 建议不超过 50 个字符.
- 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
- 第一个字母小写
- 结尾不加句号(.)

Body (按需填写,可不填)

Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例

More detailed explanatory text, if necessary.  Wrap it to 
about 72 characters or so. 

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

Footer (按需填写,可不填)

Footer 部分只用于两种情况:

  • 不兼容变动(以 BREAKING CHANGE 开头)
BREAKING CHANGE
    isolate scope bindings definition has changed.
    To migrate the code follow the example below:

    Before:

    scope: {
      myAttr: 'attribute',
    }

    After:

    scope: {
      myAttr: '@',
    }

    The removed `inject` wasn't generaly useful for directives so there should be no code using it.
  • 关闭 Issue
Closes #123, #245, #992

Revert (按需填写,可不填)

如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。

revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Body部分的格式是固定的,必须写成This reverts commit <hash>.,其中的hash是被撤销 commit 的 SHA 标识符。
如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面。

commit 示例

fix(影响范围): 获取用户邮箱不正确
feat: 增加路由跳转错误页面
fix(影响范围): 获取用户邮箱不正确

主体内容

Closes #123, #245, #992

git 日常操作

将本地分支与远程指定分支关联(手动建立关联),远程分支在前,本地分支在后

git branch --set-upstream-to origin/dev dev

git 使用手册

git 官方手册

config

查看 git 的配置

-l # 罗列 git 的本地配置

参考链接

GitFlow 相关

Git 在团队中的最佳实践–如何正确使用Git Flow

Gitflow Workflow

gitflow命令行工具 官方站点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值