首页 > 其他分享 >软件开发中的 Pull Request 工作流:逐步指南

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

时间:2024-11-13 20:46:29浏览次数:3  
标签:Pull git 软件开发 Request feature main 分支


简介
在软件开发中,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-name
          v                 
+-------------------+     Git Branch 状态:
|   删除分支        |       main
|   git branch -d   |       
+---------+---------+       
          |                  
          v                  
+-------------------+     Git Branch 状态:
|   同步主分支      |       main*
|   git checkout,   |       
|   git pull        |       
+-------------------+

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

标签:Pull,git,软件开发,Request,feature,main,分支
From: https://blog.csdn.net/yhkal/article/details/143743418

相关文章

  • 对于传统和AI软件开发的拙见
    随着AI技术的不断发展,AI大模型正在重塑软件开发流程,从代码自动生成到智能测试,未来,AI大模型将会对软件开发者、企业,以及整个产业链都产生深远的影响。我个人认为AI大模型还是有不方便的地方,当然这也不是说不方便,而是说有时候AI可能没有弄明白我想要表达的意思。它还是处于......
  • kubernetes镜像拉取失败解决方法 ErrImagePull
    被这个问题卡住了最少一个下午的时间。。。。不过就当熟悉k8s的命令了吧。。。只能这么安慰自己了最近在捣鼓k8s部署.netcore的后端(我是在windows上部署dockerdesktop来做测试的),在拉取我阿里云镜像仓库的私有镜像,搞来搞去搞了好久都没用dockpull registry.cn-hangzhou.aliyu......
  • 【小程序】封装网络请求request模块
    一、封装request请求因为我把所有项目中的接口也封装到了一个文件中,所以我建了一个services的文件夹,在下面建了一个request.js在这个里面做了请求拦截器和响应拦截器,constapiConfig=require('../config/baseUrl.js');classhttpClient{prefixUrl='';const......
  • 微信小程序 - 解决报错{“errno“:600001,“errMsg“:“request:fail errcode:-202cronet_
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在微信小程序开发中,详细解决小程序请求接口报错:{“errno”:600001,“errMsg”:“request:failerrcode:-202cronet_error_code:-202error_msg:net::ERR_CERT_AUTHORITY_INVALID”},微信小程序发起网络请求......
  • AI正在重塑软件市场格局,大模型在软件开发中的应用逐渐成为主流趋势。
    一、AI大模型定义及概述  随着人工智能技术的飞速发展,AI大模型逐渐成为科技领域的热点。AI大模型是指利用深度学习等技术训练出的超大参数规模的神经网络模型,能够通过学习海量数据来提升自身的性能和准确性。在软件开发领域,AI大模型正以其强大的自主学习和推理能力,深刻改变着软......
  • 2024/11/12日 日志 关于Servlet ---- Request(请求)& Response(响应) 的补充
    Request(请求)&Response(响应)--·Request:获取请求数据--·Response:设置响应数据Request点击查看代码--Request继承体系--ServletRequestJava提供的请求对象根接口--HttpServletRequestJava提供的对Http协议封装的请求对象接口--RequestFacade......
  • Python的Web请求:requests库入门与应用
    Python的Web请求:requests库入门与应用在Python中,进行网络请求和获取数据是许多应用程序的基础功能。requests库是Python中最流行的HTTP库之一,它以简洁、易用、功能强大的特点著称,可以帮助开发者高效地进行各种类型的Web请求。本文将带你快速上手requests库,并展示如何在实际......
  • 详解连接 MySQL8.4 出现 Client does not support authentication protocol requested
    文章目录项目场景问题描述原因分析解决方案方案一(不推荐)方案二(推荐)总结项目场景在开发过程中,我们在Node.js项目中使用MySQL数据库,并且通过typeorm和mysql库进行数据库连接。然而,在项目启动时,遇到了数据库连接失败的问题,导致项目无法正常运行。问题描述......
  • OMV安装文件管理器filebrowser和照片管理photoprism插件时Pull不了镜像的解决办法
    OMV安装文件管理器filebrowser和照片管理photoprism插件安装后不能启动服务或者PULL不了镜像卡着不动都是因为现在国内pull不了镜像的原因这里有个迷惑的人的地方是很多朋友认为是用docker来pull的镜像,于是增加了docker国内加速源后发现OMV还是拉取不了镜像。解决方法如下:因为OM......
  • SBOM 是安全软件开发的基石
    在不断发展的软件开发世界中,安全性变得越来越重要。应用程序现在更加复杂和互连,这意味着存在许多潜在的漏洞入口点。这些缺陷可能隐藏在软件的深处,在造成严重问题之前通常不会被注意到。软件物料清单(SBOM)在这里可以发挥作用。SBOM作为用于创建软件应用程序的所有组件、库和模......