Github工作流

devtools/2024/11/26 4:28:13/

GitHub 工作流 是一种专门为 GitHub 上的代码协作和版本控制而设计的工作流,它强调通过 **拉取请求(Pull Request,PR)** 来管理代码的合并和审查。GitHub 工作流通常涉及到使用 **分支** 来进行功能开发和修复,并通过 **Pull Request** 进行代码审查和合并。GitHub 工作流的核心步骤:

1. Fork 和 Clone 仓库
   - 对于开源项目或外部贡献者,通常是先 **fork** 原始仓库,然后将它克隆到本地。
   - 通过 `fork`,每个开发者可以在自己的副本上进行修改,而不直接影响到原始仓库。

2. 创建功能分支
   - 开发者从 `main` 或 `master` 分支上拉取新的分支进行功能开发。创建分支的目的是使开发工作与其他功能开发或主分支的工作隔离开。
   - **命名规范**:可以为功能分支命名,比如 `feature/new-feature`、`bugfix/fix-issue`,这样便于标识该分支的目的。

3. **开发和提交代码
   - 在功能分支上进行开发,完成某个功能或修复某个 bug 后,将更改 **提交(commit)** 到本地分支。
   - 每次提交时要写清楚简洁的提交信息,说明做了哪些更改,便于后期追踪。

4. 推送代码到远程仓库
   - 将本地的功能分支推送到 GitHub 上自己的仓库中。

5. 创建 Pull Request
   - 提交完本地更改并推送到远程仓库后,开发者可以在 GitHub 上向原始仓库提交 **Pull Request**。
   - **Pull Request(PR)** 是开发者请求将自己的功能分支合并到主仓库的 `main` 或 `master` 分支。
   - 在创建 PR 时,可以选择原始仓库的 `main` 分支作为目标分支,并向该分支提议合并开发者的功能分支。

6. 代码审查(Code Review)
   - 其他团队成员或者维护者会查看 PR 中的代码更改,进行 代码审查。
   - 审查过程中,审查者可能会提出修改意见,要求开发者修正代码中的问题,或者优化实现方式。

7. 修改和更新 PR
   - 如果在代码审查过程中发现问题,开发者需要修改代码并重新提交到功能分支。
   - 更新后的提交会自动反映到 Pull Request 中,审查者可以再次检查。

8. 合并 Pull Request
   - 一旦代码审查通过,PR 被批准,就可以将功能分支合并到 `main` 或 `master` 分支。
   - 合并时,通常有两种方式:
     - **Merge**:直接合并,保留所有的提交历史。
     - **Squash and Merge**:将所有提交合并成一个提交,简化提交历史。
     - **Rebase and Merge**:先将功能分支的提交变基到 `main` 分支之上,再进行合并。

9. 删除功能分支
   - 一旦功能分支被合并并完成了开发,可以删除该分支(无论是在本地还是 GitHub 上),保持分支管理的干净。

GitHub 工作流的详细流程示例

假设你是一个开发者,你想为一个开源项目提交一个新的功能或修复一个 bug。下面是一个典型的 GitHub 工作流步骤:

1. **Fork 仓库**

首先,点击 GitHub 上原始仓库的 **Fork** 按钮,将仓库复制到你自己的 GitHub 账户中。

2. **Clone 到本地**

从你自己的 GitHub 账户中将仓库克隆到本地,使用以下命令:
```bash
git clone https://github.com/your-username/repo-name.git
```

3. **创建一个新的功能分支**

进入本地仓库并创建一个新的分支,用于开发新功能或修复 bug:
```bash
cd repo-name
git checkout -b feature/new-feature
```

 4. **进行开发并提交更改**

在新分支上进行开发,完成后进行提交:
```bash
git add .
git commit -m "Add new feature"
```

5. **推送到远程仓库**

将本地分支推送到你自己的 GitHub 仓库:
```bash
git push origin feature/new-feature
```

6. **创建 Pull Request**

- 登录到 GitHub,进入你的仓库页面,切换到你的分支 `feature/new-feature`。
- 点击 **New Pull Request** 按钮,选择目标仓库的 `main` 或 `master` 分支作为合并目标,创建 PR。
- 在 PR 中添加标题和描述,简要说明功能或修复的内容。

7. **代码审查(Code Review)**

PR 创建后,其他开发者会对代码进行审查。如果有问题,审查者会要求你修改代码并推送新的更改到功能分支。

8. **修改代码并更新 PR**

如果需要修改代码,可以在本地进行修改,提交并推送更新:
```bash
git add .
git commit -m "Fix bug in new feature"
git push origin feature/new-feature
```
更新会自动反映在 PR 中,审查者可以再次检查。

9. **合并 Pull Request**

一旦代码审查通过,PR 被批准,就可以合并到主分支。可以选择通过 **Merge** 或 **Squash and Merge** 来合并代码。

#### 10. **删除功能分支**

合并完成后,可以删除远程和本地的功能分支:
```bash
git branch -d feature/new-feature  # 删除本地分支
git push origin --delete feature/new-feature  # 删除远程分支
```

GitHub 工作流的优缺点

优点:

1. **代码审查**:通过 Pull Request,团队成员可以对代码进行审查,确保代码质量。
2. **分支管理**:每个功能开发或 bug 修复都在独立的分支上进行,避免了直接修改主分支。
3. **版本管理**:GitHub 提供了版本控制和可视化的历史记录,使得开发过程可追溯。
4. **团队协作**:GitHub 工作流适用于多人协作,可以清晰地管理每个人的任务和提交。

缺点:

1. **操作较多**:相比于简单的提交推送,GitHub 工作流涉及更多的操作步骤(如 PR 和代码审查)。
2. **对新手要求较高**:如果你刚接触 GitHub 或者 Git,工作流可能需要一些时间来适应。

小结

GitHub 工作流是一个高效的协作流程,特别适用于开源项目和团队开发。通过使用分支、Pull Request 和代码审查,可以确保每个功能的代码质量,并促进团队成员之间的沟通和协作。尽管在某些情况下操作流程可能稍显繁琐,但它的优点远远超过缺点,尤其是在多人协作开发中,能够大大提高代码的可靠性和可维护性。


http://www.ppmy.cn/devtools/137019.html

相关文章

基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

开源动态表单form-create-designer 扩展个性化配置的最佳实践教程

在开源低代码表单设计器 form-create-designer 的右侧配置面板里,field 映射规则为开发者提供了强大的工具去自定义和增强组件及表单配置的显示方式。通过这些规则,你可以简单而高效地调整配置项的展示,提升用户体验。 源码地址: Github | G…

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…

神经网络(系统性学习三):多层感知机(MLP)

相关文章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 神经网络(系统性学习二):单层神经网络(感知机) 多层感知机(MLP) 多层感…

【数据结构】【线性表】一文讲完队列(附C语言源码)

队列 队列的基本概念基本术语基本操作 队列的顺序实现顺序队列结构体的创建顺序队列的初始化顺序队列入队顺序队列出队顺序队列存在的问题分析循环队列代码汇总 队列的链式实现链式队列的创建链式队列初始化-不带头结点链式队列入队-不带头节点链式队列出队-不带头结点带头结点…

中标麒麟部署k8sV1.31版本详细步骤

在中标麒麟操作系统上部署 Kubernetes v1.31 的详细步骤如下。这些步骤假定您对 Kubernetes 和 Linux 环境有基本了解,并且中标麒麟系统已正确安装并配置。 环境准备 更新系统并安装必要的软件包 sudo yum update -ysudo yum install -y wget curl vim net-tools…

k8s1.31版本最新版本集群使用容器镜像仓库Harbor

虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…

前端工程化-node/npm/babel/polyfill/webpack 一文速通

文章主要介绍了前端工程化的相关内容,包括 Node 环境、npm 包管理器及其命令、配置和镜像,package.json 文件,babel 和 polyfill 用于解决 JavaScript 兼容性问题,以及 webpack 这一前端构建工具的作用、核心概念、构建流程、安装…