# Learn_Gitflow **Repository Path**: note333/learn-gitflow ## Basic Information - **Project Name**: Learn_Gitflow - **Description**: 学习并使用Gitflow工作流(结合自身需求) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-12 - **Last Updated**: 2023-06-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Learn_Gitflow [gitflow]: https://marketplace.visualstudio.com/items?itemName=vector-of-bool.gitflow [Git Flow]: https://marketplace.visualstudio.com/items?itemName=Serhioromano.vscode-gitflow > 💡:使用 VSCode 扩展可以省去大量繁琐的`git`命令 > > 安装以下 gitflow 扩展(二选一) > > - [gitflow][gitflow] - 执行速度快 > - [Git Flow][Git Flow] - 图形化界面 > 💡:安装以下工具自动生成 CHANGELOG 文件 > > 使用以下命令进行全局安装(二选一) > > - `npm i -g standard-version` - 已弃用 > - `npm i -g commit-and-tag-version` - 推荐 ## 简介 演示`Gitflow`工作流,在结合自身需求下进行部分调整。 ## 远程仓库设置 - [x] 将`master`和`develop`分支都设为保护分支 > Tip | 提示: > > 这样就只有仓库管理员可以自由推送和合并代码 - [x] 使用`Angular`社区提交规范 > Tip | 提示: > > 这样就可以规范所有人的`git`提交信息 > > 码云:勾选`推送规则设置`的`启用正则表达式校验` - [x] 勾选仓库管理员不受上述规则限制 > Tip | 提示: > > 这样就可以允许仓库管理员将合并分支推送到远程仓库了 > > 类似于`Merge branch 'feature/auth' into develop`这样的提交信息 ## `feature`分支:新功能 ### 说明 - 基于:`develop`分支 - 合并回:`develop`分支 - 命名规范:`feature/[英文功能名称]` 功能分支的本质是,只要功能处于开发阶段,就会存在,但最终会合并回`develop`分支或`废弃`。 ### 规定 1. 以功能为单位,基于`develop`分支创建`feature`分支 2. 每个`feature`分支颗粒要尽量小,以利于快速迭代和避免冲突 3. 合并前,应先拉取远程`develop`分支将本地`develop`分支更新 ### 实践 1. 开始`feature`分支 ```bash # 基于develop分支创建feature分支,如: git checkout -b feature/auth develop ``` 2. 编写`feature`分支 ```bash # 进行一波操作后,提交信息 git add . git commit -m 'feat: add login feature' ... # 推送至远程仓库(可选) git push -u origin feature/auth ``` 3. 结束`feature`分支 ```bash # 切换develop分支 git checkout develop git pull origin develop # 合并回develop分支并推送 git merge --no-ff feature/auth git push origin develop # 删除feature分支(本地/远程) git branch -d feature/auth git push origin -d feature/auth ``` ## `release`分支:预发布 ### 说明 - 基于:`develop`分支 - 合并回:`develop`分支和`master`分支 - 命名规范:`release/[发布版本号]` 预发布分支为下一个生产版本,只允许小错误的修复和准备发布的元数据(版本号,发布日志,日期等)的修改。 ### 规定 1. 为发布新版本做准备时,基于`develop`分支创建`release`分支 2. `release`分支测试通过后,合并回`master`分支并给`master`分支打标签(版本号) 3. `release`分支一旦创建就将独立,不再从其他分支合并代码 4. 必须合并回`develop`分支和`master`分支或`废弃并删除` ### 实践 1. 开始`release`分支 ```bash # 基于develop分支创建release分支,如: git checkout -b release/0.1.0 develop ``` 2. 部署、测试、修复、更新日志 ```bash # 部署到测试环境下,进行测试并修复 # 期间可能会经历多次修复也可能不会 git add . git commit -m 'fix: fix login bug' ... # 生成更新日志 commit-and-tag-version -r 0.1.0 --skip.tag # 推送至远程仓库(可选) git push -u origin release/0.1.0 ``` 3. 结束`release`分支 ```bash # 合并回master分支并打标签(版本号)后推送 git checkout master git merge --no-ff release/0.1.0 git push origin master git tag -a v0.1.0 -m v0.1.0 # 打标签 git push --tags # 推送所有标记 # 合并回develop分支并推送 git checkout develop git merge --no-ff release/0.1.0 git push origin develop # 删除release分支 git branch -d release/0.1.0 git push origin -d release/0.1.0 ``` ## `hotfix`分支:热修复 ### 说明 - 基于:`master`分支 - 合并回:`master`分支和`develop`分支 - 命名规范:`hotfix/[发布版本号]` 热修复分支,类似于预发布分支,都是为了准备新的生产上线版本。 ### 规定 1. `hotfix`分支用于修复已上线产品的`bug修复`或微调功能 2. 一旦完成`bug修复`,必须合并回`master`分支和`develop`分支 3. `master`分支被合并后,应该标记一个新的版本号(如:0.1.0 -> 0.1.1) 4. `hotfix`分支一旦创建就将独立,不再从其他分支合并代码 ### 实践 1. 开始`hotfix`分支 ```bash # 基于master分支创建hotfix分支,如: git checkout -b hotfix/0.1.1 master ``` 2. 紧急修复、更新日志、推送 ```bash # 进行一波紧急操作,修复错误并提交 git add . git commit -m 'fix: hotfix xxx bug' ... # 生成更新日志 commit-and-tag-version -r 0.1.1 --skip.tag # 推送至远程仓库(可选) git push -u origin hotfix/0.1.1 ``` 3. 结束`hotfix`分支 ```bash # 合并回master分支并推送 git checkout master git merge --no-ff hotfix/0.1.1 git push origin master git tag -a v0.1.1 -m v0.1.1 # 打标签 git push --tags # 推送所有标记 # 合并回develop分支并推送 git checkout develop git merge --no-ff hotfix/0.1.1 git push origin develop # 删除hotfix分支 git branch -d hotfix/0.1.1 git push origin -d hotfix/0.1.1 ```