Pull Requests(PR)

前置知识和准备:

  1. Git下载(记得身份配置)

  2. git的基本命令(主要看分支管理和远程仓库模块命令即可)

什么是Pull requests?

Pull Requests(PR)是代码协作平台(如 GitHub、GitLab 等)中的一种功能,用于提议将某分支的代码变更合并到另一个分支(通常是主分支)。它允许开发者在合并前进行代码审查、讨论和修改,是团队协作开发的核心工具之一。

一、fork

先fork你想要PR的开源项目的仓库,fork(复刻)的意思就是克隆了一份属于你的私人副本。

为什么要fork呢?

  • 那是因为原项目你通常只有"读"的权限,无法进行更改。fork之后,这个副本就在你的Github账号下,你就可以随意增删代码、实验新技术,而不会影响到原项目。

  • 建立了"链接"关系

    • 虽然是一个独立的副本,但Github会帮你记录它的出处(也就是原项目)

    • 你可以随时从原项目Pull最新的更新,保证自己的代码不落后。

    • 当你完成修改后,就可以通过Pull Request请求原作者把你写的代码合并到原项目

进入你想要PR的项目仓库,点击Fork
输入一些可以自定义的东西(一般默认就行)
Fork成功之后会跳转到对应fork项目仓库(在你的Github账户下)

二、clone

将fork项目clone到本地

1.1 复制项目地址(如果配置了ssh,可以复制对应的ssh地址:如何在github上配置ssh key)

1.2 在本地的一个目录里打开Git base

1.3 输入git clone + 复制的项目地址,将项目部署到本地

创建专属的功能分支(一般一个 PR 对应一个独立分支,一个分支只做一件事,禁止在默认分支直接提交代码)

三、代码更新并推送

在你常用的编辑器来打开该项目并进行对代码的更新(这里以goland演示,无论哪个编辑器后续的操作都是一致的)

可以看下面这篇文章了解下Git 代码提交注释管理规范

使用约定式提交规范编写Git代码提交注释-开发者社区-阿里云

提交并推送修改到你的远程仓库(即最开始你fork的那个项目仓库)

代码提交前的必做检验:

  • 代码格式检查:执行项目的格式化命令(如 Go 项目的go fmt ./...、前端项目的prettier --write .),保证代码符合项目规范;
  • 静态代码检查:执行项目的 lint 命令,消除所有警告和错误;
  • 编译 / 构建校验:本地编译 / 构建项目,确保无编译报错;
  • 单元测试:执行项目的单元测试用例,确保所有用例通过,修改不影响原有业务逻辑。

四、提交PR

打开fork项目仓库并切换到需要PR的分支
点击创建一个Pull request

PR description该怎么写?(以下是一个简要的模板,如果想要更详细可以看其他人的 pr description或者询问Ai)

  • 背景与动机 (What & Why)

    • 解决了什么问题 / 关联的 Issue: 例如:修复了客户端代码中注释缺失的问题,提升可读性。
  • 主要改动 (Changes)

    • clientWR.go 中补充了核心函数的注释说明。

    • 修正了某处的拼写错误。

  • 测试说明 (How to Test)

    • 本地编译通过。

    • 确认修改不影响现有逻辑。

PR 创建成功且没有冲突

这样,一个PR便成功创建并提交给了项目作者或者审核者,你只需要等待他们的审查和反馈即可。

当然,如果有冲突的话,可以参考文章PR冲突详解及如何更新进行修改

以上就是一个完整成功的PR流程了,但在其中还有一些需要注意的点:

注意一:在提交前最好先更新一下自己fork的项目仓库,因为在你修改fork项目代码的时候原项目代码也可能会更新,如果更新的那一部分正好和你有关,可能会导致不必要的代码冲突,所以,任何时候要推送代码的时候都要更新一下。

方法:在 GitHub 页面上同步 现在 GitHub 你的 Fork 仓库主页上,有一个 "Sync fork" (同步 fork)的按钮。每次你准备写代码前,或者准备提交 PR 前,先去点一下那个按钮,确保你的 Fork 仓库和原仓库保持一致,然后再 git pull 到你本地!!!。

相关推荐
nashane2 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__2 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
AOwhisky2 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算
_李小白2 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习
网络研究院2 小时前
AgentGG:开源的代理式 SAST 扫描器
开源·github·工具·网络研究观·agentgg
提子拌饭1334 小时前
Column 嵌套布局:多级 Column 实现复杂纵向结构——鸿蒙 HarmonyOS ArkTS 原生学习应用
学习·华为·harmonyos·鸿蒙·鸿蒙系统
凤炎忻4 小时前
【GitHub】GitHub Actions 快速入门
github·自动化运维
xqqxqxxq5 小时前
树结构技术学习笔记
数据结构·笔记·学习
逛逛GitHub5 小时前
YouTube 一哥手搓了个 AI 工作台,一周就 5 万多 Star 。
github