软件开发中的 Pull Request 工作流:逐步指南


简介
在软件开发中,Pull Request(PR)是开发者向项目主代码库提交代码更改请求的过程。这种方式促进了代码审查、协作和反馈。在本文中,我们将详细介绍一个典型的 Pull Request 工作流,并解释其命名的原因。


1. 创建分支

在开始新功能开发或修复 bug 之前,您需要从主代码库(通常是 mainmaster)创建一个新分支。这样做可以将您的更改与主代码库隔离,便于管理和追踪。

# 从主分支创建新分支
git checkout -b feature/your-feature-name

2. 开发和提交代码

在新分支上进行开发工作。完成更改后,使用 git addgit commit 将更改提交到本地版本库。

# 添加修改的文件
git add .# 提交代码并附上描述性信息
git commit -m "Add new feature"

3. 推送分支到远程仓库

在本地提交代码后,需要将分支推送到远程仓库,如 GitHub。这样做是为了让其他团队成员可以访问您的更改并进行审查。

# 将分支推送到远程仓库
git push origin feature/your-feature-name

4. 创建 Pull Request

推送新分支后,您可以使用 GitHub CLI (gh) 工具创建 Pull Request。这样可以直接从命令行完成 PR 的创建,简化流程。

# 创建 Pull Request
gh pr create --title "Add new feature" --body "详细说明更改的目的和背景" --base main

在创建 PR 时,您可以指定标题和描述,并关联相关的 Issue(如:Closes #123)。

Pull Request 命名的原因

“Pull Request”得名于请求项目维护者(审核者)将您的更改从您的分支“拉取”(Pull)到主分支中。这个过程是一个请求,因为合并需要经过代码审查和批准。

5. 代码审查

提交 Pull Request 后,其他开发者会对您的代码进行审查。审查过程包括:

  • 提出建议或优化点。
  • 指出可能的错误或问题。
  • 讨论实现方法或设计考虑。

如果需要更改,您可以在本地修改代码,提交并推送更新。Pull Request 会自动包含这些更新。

# 根据反馈进行修改后再次提交
git add .
git commit -m "Fix code review issues"
git push origin feature/your-feature-name

6. 通过和合并

代码审查通过后,项目维护者或有权限的人会将您的分支合并到主分支。在 GitHub 中,您可以选择不同的合并策略:

  • Merge Commit:保留所有提交历史,创建一个合并提交。
  • Squash and Merge:将所有提交压缩为一个提交,保持主分支整洁。

7. 删除分支

合并后,您可以删除不再需要的功能分支。

# 删除本地分支
git branch -d feature/your-feature-name# 删除远程分支
git push origin --delete feature/your-feature-name

8. 本地同步主分支

最后,切换回主分支并拉取最新的代码,保持本地仓库的更新。

# 切换回主分支
git checkout main# 拉取最新的主分支代码
git pull origin main

Pull Request 工作流程图

以下是一个简单的 ASCII 流程图描述 Pull Request 工作流:

+-------------------+     Git Branch 状态:
|   创建新分支      |       main
|   git checkout -b |        \
+---------+---------+         \-- feature/your-feature-name|                  v                  
+-------------------+    Git Branch 状态:
|   开发和提交代码  |       main
|   git add, commit |        \
+---------+---------+         \-- feature/your-feature-name*|                                    (committed changes)v                  
+-------------------+     Git Branch 状态:
|   推送到远程仓库  |       main
|   git push origin |        \
+---------+---------+         \-- feature/your-feature-name*|                                    (pushed changes)v                  
+-------------------+     Git Branch 状态:
| 创建 Pull Request |       main
|   gh pr create    |        \
+---------+---------+         \-- feature/your-feature-name*|                                    (PR created)v                  
+-------------------+     Git Branch 状态:
|   代码审查        |       main
|   修改后推送更新  |          \
+---------+---------+         \-- feature/your-feature-name*|                                    (reviewed and updated)v                  
+-------------------+     Git Branch 状态:
|   合并到主分支    |       main (merged)
+---------+---------+        \|                   \-- feature/your-feature-namev                 
+-------------------+     Git Branch 状态:
|   删除分支        |       main
|   git branch -d   |       
+---------+---------+       |                  v                  
+-------------------+     Git Branch 状态:
|   同步主分支      |       main*
|   git checkout,   |       
|   git pull        |       
+-------------------+

通过这个工作流,团队成员可以高效协作开发,并确保代码在合并到主分支之前得到充分的审查和讨论。GitHub CLI 工具进一步简化了命令行环境下的操作,使得整个流程更加流畅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14320.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

光伏设计软件怎么选?有哪些推荐?

在光伏电站的开发建设中,专业设计软件是提升电站能效、降低开发成本的重要工具。市场上存在许多优秀的光伏设计软件,能够通过还原现状和三维建模来呈现出最符合实际需求的设计方案,究竟该怎么选呢? -易用性:一些软件操…

刷题强训(day06) -- 大数加法、链表相加、大数乘法

目录 1、大数加法 1.1 题目 1.2 思路 1.3 代码实现 2、链表相加(二) 2.1 题目 2.2 思路 2.3 代码实现 3、大数乘法 3.1 题目 3.2 思路 3.3 代码实现 1、大数加法 1.1 题目 1.2 思路 这道题可以模拟列竖式相加解答, 将每一位都转…

雷池waf安装并部署防护站点

雷池waf安装并部署防护站点 最低配置要求 操作系统:Linux 指令架构:x86_64 软件依赖:Docker 20.10.14 版本以上 软件依赖:Docker Compose 2.0.0 版本以上 最小化环境:1 核 CPU / 1 GB 内存 / 5 GB 磁盘 写在前面 本文…

AI技术赋能电商行业:创新应用与未来展望

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 引言 随着科技的飞速发展,人工智能(AI)技术正逐步渗透到各行各业&a…

【Linux】进程(状态)

大家好呀,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流哦 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各…

自动化测试框架的搭建详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 最近好多小伙伴都在说接口自动化测试,那么究竟什么是接口自动化测试呢?让我们一起往下看就知道了,首先我们得先弄清楚下面这…

重拾CSS,前端样式精读-媒体查询

前言 本文收录于CSS系列文章中,欢迎阅读指正 说到媒体查询,大家首先想到的可能是有关响应式的知识点,除此之外,它还可以用于条件加载资源,字体大小,图像和视频的优化,用户界面调整等等方面&am…

4TS Series TVS 的解析

4TS Series 400W Transient Voltage Suppressor指的是时源芯微(TimeSource)生产的一系列瞬态电压抑制二极管(Transient Voltage Suppressor,TVS),这些二极管专门设计用于保护敏感电子设备免受雷电、电源浪涌…

语义分割数据增强,图像和标签同步对应详细增强教程(附代码)

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《图像增强》 &a…

本地部署 OpenHands

本地部署 OpenHands 0. 引言1. 部署 OpenHands2. 访问 OpenHands3. 验证 OpenHands 0. 引言 OpenHands 是一个由人工智能驱动的软件开发代理平台。 OpenHands 代理可以执行人类开发人员可以执行的任何操作:修改代码、运行命令、浏览网页、调用 API,甚至…

amber分子动力学

分子动力学模拟是分子模拟中最接近实验条件的模拟方法,能够从原子层面给出体系的微观演变过程,直观的展示实验现象发生的机理与规律,促使学术研究向着更高效、更经济、更有预见性的方向发展。可以解决和研究DNA的折叠和性质、蛋白与配体的识别…

丹摩征文活动 |通过Pycharm复现命名实体识别模型--MECT模型

文章目录 🍋1 引言🍋2 平台优势🍋3 丹摩平台服务器配置教程🍋4 实操案例( MECT4CNER-main)🍋4.1 MECT4CNER-main模型🍋4.2 环境配置🍋4.3 训练模型🍋4.4 数据…

嵌入式系统的利器C++

一、嵌入式 C 概述 嵌入式 C 在嵌入式系统开发中占据着至关重要的地位。它是 C 的一个子集,由日本 CPU 大厂于 1996 年提出,目标是在保持 C 面向对象特性的同时,减小代码体积、提升执行效率并简化编译器。 在嵌入式系统开发中,嵌…

【计算机网络】【网络层】【习题】

计算机网络-传输层-习题 文章目录 13. 图 4-69 给出了距离-向量协议工作过程,表(a)是路由表 R1 初始的路由表,表(b)是相邻路由器 R2 传送来的路由表。请写出 R1 更新后的路由表(c)。…

C/C++精品项目之图床共享云存储(2):MySql连接池

一:介绍 C/C精品项目之图床共享云存储(1) 我们项目的第一个文章讲解了很多的基础组件,包括线程池。我们都知道线程池是为了资源的复用,提高效率。而我们的MySql连接池也是一样的,是为了维持管理固定数量的…

网安数学基础-同余关系

文章目录 参考等价关系实例 同余同余和等价同余的运算 乘法逆元一次同余方程消去律 剩余类中国剩余定理欧拉函数欧拉定理 费马小定理 参考 【一口气学完】密码学的数学基础2,《同余关系》,一小时学完 等价关系 三角形里的全等关系 等价关系定义 下面这…

工业主板市场现状和主要市场驱动因素概述

工业主板市场是计算机硬件行业中的一个重要细分市场,专注于供应专为工业应用而设计的主板。与消费级主板不同,工业主板可承受极端条件,包括高温、连续运行以及暴露在灰尘和潮湿环境中。工业主板对于制造、自动化、医疗、国防和能源等行业中使…

舌尖上的传统美味 —— 食家巷白吉饼

第一眼看到食家巷白吉饼,就被它朴实的外表所吸引。圆润的形状,淡淡的麦色,没有过多的装饰,却散发着一种让人安心的质朴之美。 🎈拿起一个白吉饼,轻轻一掰,“咔” 的一声,那酥脆的外…

OpenHarmony-1.启动流程

OpenHarmony启动流程 1.kernel的启动 流程图如下所示:   OpenHarmony(简称OH)的标准系统的底层系统是linux,所以调用如下代码: linux-5.10/init/main.c: noinline void __ref rest_init(void) {struct task_struct *tsk;int pid;rcu_sch…

ANR分析实例

目录 一、ANR出的问题原因 二、日志分析 2.1 CPU 负载 2.2 内存 2.3 堆栈信息 三、案例分析 3.1 主线程无卡顿,处于正常状态堆栈 3.2 主线程执行耗时操作 3.3 主线程被锁阻塞 3.4 CPU被抢占 3.5 内存紧张导致ANR 3.6 系统服务超时导致ANR 3.7 Input dis…