git工作流

工作流

一、概述

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分支(预发布分支)合并到masterdev分支

  • 发起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)推送功能分支远程仓库 – 特别注意:先拉后推

第十二:合并分支,把修复分支合并到masterdev分支(打补丁)

  • 发起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… (模式)

### Git 工作流实施指南最佳实践 #### 一、理解Git工作流的重要性 有效的Git工作流能够显著提升团队协作效率,减少冲突并提高代码质量。通过合理规划和严格执行Git操作流程,可以确保项目开发过程更加顺畅。 #### 二、选择合适的工作流模式 常见的Git工作流有集中式工作流、功能分支工作流以及GitFlow等。对于大多数企业级应用而言,推荐采用GitFlow模型[^3]。该模型不仅支持长期维护多个环境(如生产环境与测试环境),而且便于管理不同类型的变更请求(新特性开发、修复Bug等)。 #### 三、初始化仓库结构 当决定使用GitFlow作为主要工作方式时,应当先设置好基础架构。这通常意味着要建立`main`/`master`主干用于稳定发布版本;另外还需要设立专门的`develop`分支供日常迭代更新之用。除此之外,在实际工作中可根据需求灵活增删其他辅助性质的临时分支,例如针对特定任务而开设的功能型子线程或者热修专用通道等等。 #### 四、创建新的特性分支 每当启动一项具体工作任务之前,都应该基于当前最新的`develop`状态派生出独立的新分支来进行局部改动尝试。命令如下所示: ```bash git checkout develop && git pull origin develop # 更新本地develop至最新态 git checkout -b feature/new-feature-name # 创建名为new-feature-name的功能分支 ``` #### 五、提交更改前准备 完成编码之后,在推送任何修改到远程服务器以前,请务必执行以下几步检查动作: - 运行自动化测试套件确认无误; - 遵循既定命名约定编写清晰明了的日志信息; - 利用诸如`git diff`之类的内置指令仔细核对即将上传的内容范围是否恰当; - 使用图形界面工具像`gitk --all`来直观对比各次commit间的异同之处以便及时发现潜在风险点[^2]。 #### 六、合并回主线 一旦某个feature branch上的作业全部结束并通过审核,则可考虑将其成果融入更广泛的codebase当中去。此时应遵循一定的策略原则进行merge operation: - 对于小型改进可以直接fast-forward merge; - 如果涉及较大规模重构则建议采取no-fast forward的方式保留历史记录轨迹方便日后追溯查询; 最后一步就是把最终版push up to remote repository, 同步给所有成员知晓此次变动详情。 #### 七、定期同步远端变化 在整个项目的持续演进过程中,保持个人副本始终处于最新状态至关重要。因此每隔一段时间就需要主动fetch来自origin/master 和origin/develop 的增量数据,并适时rebase 自己手头正在处理中的各个branch使之紧跟官方进度不掉队。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WyuanY.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值