Github工作流

news/2024/11/24 2:57:24/

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/news/1549428.html

相关文章

缓冲区的奥秘:解析数据交错的魔法

目录 一、理解缓存区的好处 (一)直观性的理解 (二)缓存区的好处 二、经典案例分析体会 (一)文件读写流(File I/O Buffering) BufferedOutputStream 和 BufferedWriter 可以加快…

Flutter:AnimatedSwitcher当子元素改变时,触发动画

AnimatedSwitcher中的子元素 由:CircularProgressIndicator() 改变为:Image.network(https://cdn.uviewui.com/uview/swiper/1.jpg) 则会触发动画class _MyHomePageState extends State<MyHomePage> {bool flag true;overrideWidget build(BuildContext context) {retur…

百度Q3财报:净利润增长17%超预期 文心大模型日调用量增30倍达15亿

发布 | 大力财经 11月21日晚&#xff0c;百度发布2024年第三季度财务报告&#xff0c;显示季度总营收336亿元&#xff0c;百度核心营收265亿元&#xff0c;归属百度核心的净利润75.4亿元&#xff0c;同比增长17%&#xff0c;超出市场预期。财报显示&#xff0c;11月&#xff0…

Excel常用技巧分享

excel单元格内换行 直接按回车会退出当前单元格的编辑&#xff0c;如果需要在单元格中换行&#xff0c;需要按下AltEnter。 excel插入多行或多列 WPS 在WPS中想要插入多行&#xff0c;只需在右键菜单中输入对应的数字即可。 Office Excel excel中相对麻烦一些&#xff0c;比…

web——sqliabs靶场——第九关——时间盲注

什么是时间盲注 时间盲注是指基于时间的盲注&#xff0c;也叫延时注入&#xff0c;根据页面的响应时间来判断是否存在注入。 使用sqlmap不同的技术 sqlmap --technique 参数用来设置具体SQL注入技术 B: Boolean-based blind 基于布尔的忙逐步 E:Error-based 报错注入 U&am…

PyTorch 分布式并行计算

0. Abstract 使用 PyTorch 进行多卡训练, 最简单的是 DataParallel, 仅仅添加一两行代码就可以使模型在多张 GPU 上并行地计算. 但它是比较老的方法, 官方推荐使用新的 Distributed Data Parallel, 更加灵活与强大: 1. Distributed Data Parallel (DDP) 从一个简单的非分布…

Django用户认证定制化与扩展方案分析

Django用户认证定制化与扩展方案分析 目录 &#x1f4dd; 基于AbstractUser定制Django用户模型⚙️ 使用自定义字段扩展用户模型&#x1f510; 自定义用户权限与分组的管理&#x1f6e0;️ 自定义用户模型的其他实现方案⚖️ 不同用户模型方案的优缺点分析 1. &#x1f4dd; …

Linux登录指令last详解文章

引言 在Linux系统中&#xff0c;了解用户登录记录是系统管理和安全审计的重要任务之一。last指令作为Linux系统中用于检索和展示用户登录信息的工具&#xff0c;扮演着至关重要的角色。本文将详细介绍last指令的定义、架构、原理、企业应用以及常见的命令体系&#xff0c;帮助…