工作流
一、概述
1、概念
通俗的讲,GIt工作流指的是代码管理的工作流程和方式。在实际的工作中,根据不同的场景,使用不同的工作流方式。
工作流是各个开发者协同工作的方式或模式。
2、分类
- 集中式工作流
- 功能分支工作流
- GitFlow工作流
- Forking工作流
二、集中式工作流
第一:创建远程仓库(Gitee) - 项目经理、组长、负责人
第二:创建本地仓库,推送远程仓库
第三:添加成员 - 权限
第四:各成员克隆远程仓库项目
第五:各成员在各自的本地仓库中,实现相关的操作
1)添加文件 / 修改文件
2)添加暂存区
3)提交版本 – 本地版本库
4)推送远程仓库 – 特别注意:先拉后推
5)解决冲突
第六:根据需要,打标签
课堂练习:以学习小组为单位或同桌为单位,创建远程仓库,添加成员,在仓库中实现各种操作以及骚操作都可以(但实际开发中就不能有)!
开放性比较大,比较适合小团队开发
三、功能分支工作流
第一:创建远程仓库(Gitee) - 项目经理、组长
第二:创建本地仓库,推送远程仓库
第三:添加成员 - 权限
第四:设置分支的权限 - 把master分支保护起来
第五:各成员克隆远程仓库项目
第六:各成员在各自本地仓库中,实现相关的操作
1)创建相关的功能分支,实现相关的功能或业务,而不是直接在master分支中进行操作,从而保证master分支安全可靠、不被污染。
2)添加文件 / 修改文件
3)添加暂存区
3)提交版本 – 本地版本库
4)推送功能分支远程仓库 – 特别注意:先拉后推
$ git push --set-upstream origin feature-xxxx
5)解决冲突
第七:合并分支,把相关的功能分支合并到master分支中
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并
注意:在此过程中,很有可能会发生合并冲突问题 - 解决冲突
zing163 - feature-reg - 实现注册功能 - 推送到远程仓库 - (发起 Pull Request)
zing173 - git pull origin feature-reg : master - 冲突 - git push
zing163 - 切换到master - git pull - 拉取远程仓库中最新的代码
第八:推送远程仓库
第九:根据需要,打标签
第十:切换相关分支,拉取、更新内容,同步仓库(重复以上操作)
第十一:完成了功能分支的使命后,根据需要把功能分支删除
课堂练习:以学习小组为单位或同桌为单位,创建远程仓库,添加成员,设置保护分支,实现基于功能分支工作流的操作。
四、GitFlow工作流
第一:创建远程仓库(Gitee) - 项目经理、组长
第二:创建本地仓库,推送远程仓库
第三:添加成员 - 权限
第四:基于master
分支,创建dev
分支(开发分支),把master
分支和dev
分支保护起来,把
dev
分支设置为默认分支。
第五:各成员克隆远程仓库项目
第六:各成员在各自本地仓库中,实现相关的操作
1)每次开始新的功能前先创建一个功能分支,实现相关的功能或业务
2)添加文件 / 修改文件
3)添加暂存区
4)提交版本 – 本地版本库
5)推送功能分支远程仓库 – 特别注意:先拉后推
$ git push --set-upstream origin feature-xxxx
6)解决冲突
第七:合并分支,把相关的功能分支合并到dev
分支中
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并
注意:
- 在此过程中,很有可能会发生合并冲突问题 - 解决冲突
- 开发者的本地仓库要拉取远程仓库的内容,同步更新远程仓库
第八:开发到一定阶段,基于dev
分支,创建RELEASE
分支(预发布分支) - 测试或完善、修复操作
命名规范:release-xxxx
1)添加文件 / 修改文件
2)添加暂存区
3)提交版本 – 本地版本库
4)推送功能分支远程仓库 – 特别注意:先拉后推
第九:合并分支,把RELEASE
分支(预发布分支)合并到master
和dev
分支
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并
第十:打标签
管理员权限
命名规范:xxxx-release
$ git tag 标签名称
$ git tag -a 标签名称 -m 描述信息
第十一:如果某个标签(或版本)有BUG,基于此标签新建一个修复分支,在此分支中,对此BUG进行修复
# 发起 issues (问题)
# 基于标签创建新的热修复分支 - hotfix-xxxx
$ git checkout -b <分支名称> <标签名称>
$ git checkout -b hotfix-I63LUP release-1.0.0
1)添加文件 / 修改文件
2)添加暂存区
3)提交版本 – 本地版本库
4)推送功能分支远程仓库 – 特别注意:先拉后推
第十二:合并分支,把修复分支合并到master
和dev
分支(打补丁)
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并
第十三:打标签
第十四:删除相关的分支
# 删除本地分支
$ git branch -d 分支名称
# 删除远程分支
$ git push origin --delete 分支名称
第十五:各组员更新dev
分支,重复以上的操作
课堂练习:以学习小组为单位或同桌为单位,实现GitFlow工作流的相关操作。
五、Forking工作流
第一:Foking别人的项目到自己的帐号下
第二:把别人的项目从你自己帐号下clone下来
第三:开发
注意:开发过程中,使用以上学过的工作流或自定义工作流
第四:Pull Request请求合并 - 贡献代码
六、自定义工作流
基于GitFlow工作流做了一个简化
第一:组长在本机创建初始项目(IDE开发工具 + 忽略文件),创建本地仓库并提交第一个版本
第二:创建空的远程仓库,并创建和设置相关分支
1)添加远程仓库,推送本地仓库到远程
2)创建相关的分支
- 主分支:master
- 开发分支:dev
- 功能分支:dev-组员的名字,如:dev-wyy
3)添加开发成员
4)设置分支规则
第三:各组员clone远程仓库到本机,进行相关的操作
1)切换到成员自己对应的分支
# 方法一
$ git pull origin dev-xxx
$ git checkout dev-xxx
# 方法二
$ git checkout -b dev-xxx
$ git pull origin dev-xxx
# 方法三
$ git fetch origin dev-xxx
$ git checkout dev-xxx
2)添加文件 / 修改文件
3)添加暂存区
4)提交版本 – 本地版本库
5)推送功能分支远程仓库 – 特别注意:先拉后推
6)合并分支,把组员的功能分支合并到 dev
分支中
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并(建议)
7)拉取、合并master分支,更新其他成员的代码到自己的分支中 – 先拉后推
第四:合并分支,开发到某个阶段,把 dev
分支合并到 master
分支中
- 发起Pull Request(合并请求) - 代码托管平台
- 管理员可以根据需要直接合并(建议)
注意:dev要经过测试
第五:打标签
七、IDEA操作GIT
1、配置 Git 环境
Preferences - Version Control - Git
2、克隆项目
# 命令克隆 $ git clone .....
1)方法一
File菜单 - New - Project from Version Control…
注意:拷贝项目的远程仓库地址
2)方法二
退出项目,回到欢迎界面 - Get from VCS
3)方法三
Git菜单 - clone…
3、创建项目
1)方法一
File菜单 - New Project - 勾选Create Git repository
2)方法二
File菜单 - New Project - 不勾选Create Git repository
- 在当前项目终端中,通过命令初始化仓库:
git init
- VCS菜单 - Create Git Repository…
4、忽略文件
第一:Preferences - Plugins - MarketPlace - 搜索.ignore - installed - 重启IDEA
第二:创建忽略文件,并添加忽略内容
选中项目右键 - New - .ignore File … - 选择模板
注意:在IDEA中,创建完项目后,第一件事情就应该先创建忽略文件
6、Git基本操作
右键项目 - Git菜单 、菜单栏中多了一个Git菜单
所有的Git操作都在Git菜单中
1)暂存文件
右键项目 - Git菜单 - Add
2)提交版本
右键项目 - Git菜单 - Commit Directory…
3)管理远程地址
右键项目 - Git菜单 - Manage Remotes…
4)推送远程仓库
右键项目 - Git菜单 - Push…
注意:除了第一次可以直接推送,否则,在每次推送之前,都要遵循:先拉后推(解决冲突问题)
5)拉取远程仓库
右键项目 - Git菜单 - Pull…
6)解决冲突
注意:冲突问题要尽量避免
7、分支操作
1)创建分支
2)推送分支
3)更新 / 拉取分支
4)切换分支
5)合并分支
6)删除分支
8、标签操作
1)创建标签
2)删除标签
9、撤销与恢复
第一:在 Log 面板中,选择某个版本提交 - Copy Reversion Number(40位哈唏值)
rectory…
3)管理远程地址
右键项目 - Git菜单 - Manage Remotes…
4)推送远程仓库
右键项目 - Git菜单 - Push…
注意:除了第一次可以直接推送,否则,在每次推送之前,都要遵循:先拉后推(解决冲突问题)
5)拉取远程仓库
右键项目 - Git菜单 - Pull…
6)解决冲突
注意:冲突问题要尽量避免
7、分支操作
1)创建分支
2)推送分支
3)更新 / 拉取分支
4)切换分支
5)合并分支
6)删除分支
8、标签操作
1)创建标签
2)删除标签
9、撤销与恢复
第一:在 Log 面板中,选择某个版本提交 - Copy Reversion Number(40位哈唏值)
第二:右键项目 - Git 菜单 - Reset HEAD… (模式)