PR 可让你在 GitHub 上向他人告知你已经推送到存储库中分支的更改。 在 PR 打开后,你可以与协作者讨论并审查潜在更改,在更改合并到基本分支之前添加跟进提交。

为什么 PR

使用 PR 的主要原因是促进有益的代码审查过程。如果允许团队中的每个人都在不收集反馈和确保质量的情况下编辑代码,则项目很快就会变得一团糟并存在许多问题。代码审查被证明有助于将项目的标准保持在更高的水平,并减少合并到项目中的问题数量。

代码审查

  • 代码

在合并更改之前检查更改的过程称为 代码检查。建议的更改可以像修复一个小的拼写错误一样简单,也可以像向项目添加数百个具有重大更改的文件一样复杂。当发起拉取请求时,项目的维护者能够查看建议的更改,提出编辑建议,并批准要合并的建议更改。

  • 审查人

拉取请求的作者是对所提议的项目进行更改的一个或多个人。审稿人通常是与作者的队友或合作者,负责审校建议的更改。有许多方法可以决定谁应该查看因项目而异的更改。一些较大的项目有有限数量的“维护者”,他们是一组定义的审阅者,允许批准将更改合并到项目中。其他项目允许除作者以外的任何人批准要合并的更改。

PR 实录

选取的项目是博客园主题 Blogure

如果希望为项目做贡献, 首先要检查目前项目中有那些悬而未决的问题, 有哪些希望新人参与. 主要的渠道就是 issues.

issues

want helped 表示是一个需要大家帮助的 issue, 点进入可以看到具体的项目描述, 如果有兴趣就可以将 Assignees 选择自己.

如果你有其他好的想法, 也可以通过 New issue, 发起讨论.

回到当前 issue, 尝试去理解下需求内容, 如果描述不够清楚, 可以在评论区讨论. 这个需求说了, 原来主题切换到暗黑模式后, 如果此时刷新, 就会失效, 希望将状态存入到 localStorage 中, 以便用户下次可以保存暗黑模式.

把项目 fork 到自己的仓库中, 就可以开始这次旅程了.

coding

通过描述, 完成了下面的代码, 通过 diff 来看到这次代码的变化.

$ git diff page_begin/footer.html
diff --git a/page_begin/footer.html b/page_begin/footer.html
index d31e799..9043f31 100644
--- a/page_begin/footer.html
+++ b/page_begin/footer.html
@@ -4,7 +4,7 @@
<a href="https://github.com/xnuc/cnblogs-theme-blogure">source</a></small>
<label for="switch">
<input type="checkbox" style="position:fixed;bottom:var(--spacing);left:var(--spacing);" id="dark-switch"
- role="switch" @click="darkSwitcher($el)">
+ role="switch" @click="darkSwitcher($el)" :checked="localStorage.getItem('data-theme') === 'dark' ?? false">
</label>
<template v-if="vm.main.layout === 'post'">
<label for="switch">
@@ -23,12 +23,20 @@
$template: '#blogure-footer',
}
}
-
+
function darkSwitcher(dom) {
+ darkSwitcherWithStorage(dom)
if (dom.checked) document.querySelector('html').setAttribute('data-theme', 'dark')
if (!dom.checked) document.querySelector('html').setAttribute('data-theme', 'light')
} + function darkSwitcherWithStorage(dom) {
+ if (!window.localStorage) return
+ if (dom.checked) localStorage.setItem('data-theme', 'dark')
+ if (!dom.checked) localStorage.setItem('data-theme', 'light')
+ }
+ if (window.localStorage) document.querySelector('html').setAttribute('data-theme', localStorage.getItem('data-theme'))
+
function tocSwitcher(dom) {
if (dom.checked) {
document.querySelector('#toc').style.transform = 'translate(0)'

确认无误后, 可以提交到自己的仓库, 如果有提交规范, 注意提交规范.

git add .
git commit -m "feat: 暗黑模式存入localStorage #40"
git push

PR

提交后, 在 fork 仓库可以发起提交了.

有的项目会有严格的分支保护, 这个项目提示必须通过至少一个项目成员的代码审查. 右侧可以添加代码审查人, 等待审查结果.

审查过程中, 可能会有成员提出指导性建议. 如果你认为合理, 可以修改. 或者不合理, 在他的建议下面继续讨论.

merge

检查通过后, 可以 merge 到 master.

重新回到 issue 区, 将提交绑定到这次 issue 上, 关闭这个 issue.

看到 Closed, 这次简单的 PR 就完成了.

为开源提 PR的更多相关文章

  1. 记录第一次给开源项目提 PR

    本文是深入浅出 ahooks 源码系列文章的第八篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本篇文章算是该系列的一个彩蛋篇,记录一下第一次给开源项目提 PR ...

  2. 怎么给开源项目提PR?

    1. fork 你要的项目 2. 下载到本地 相关步骤如下 在你需要的文件夹下面,右键 git bash 命令,打开 git 命令框 执行如下指令可将项目代码下载到当前目录 ~~~ git clone ...

  3. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  4. 给ShardingSphere提了个PR,不知道是不是嫌弃我

    说来惭愧,干了 10 来年程序员,还没有给开源做过任何贡献,以前只知道嘎嘎写,出了问题嘎嘎改,从来没想过提个 PR 去修复他,最近碰到个问题,发现挺简单的,就随手提了个 PR 过去. 问题 问题挺简单 ...

  5. fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因

    很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...

  6. 算法工程师想进一步提高竞争力?向TensorFlow开源社区贡献你的代码吧

    算法工程师为什么也要向社区贡献代码? [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] “做算法的人要熟悉算法框架源码吗?算法工程师难 ...

  7. 记一次Apache Carbondata PR的经历

     前言 前段时间有幸接触到Apache Carbondata,试用过程中发现了一个小小的问题,并且又很快的定位到了问题.然后在社区群里反映了下,负责人问愿不愿意提个JIRA,PR,然后我在没有任何开源 ...

  8. PouchContainer 开源版本及内部版本一致性实践

    PouchContainer 开源版本及内部版本一致性实践 为什么要做内外版本一致 对外开源是提升影响力.共建生态的有力手段.在项目对外开源的过程中,首先是将可以开源的部分抽离出来,发布一个“开源版本 ...

  9. 微服务开源生态报告 No.7

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

随机推荐

  1. 自动登录token过期问题

    之前遇到的一个也不算棘手的问题,自动登录本地存储了token却无法登录到主页. 先说一下我自动登录的思路:在用户登录成功时,将 token 存入 cookie :当用户下次来到本网站,读取 cooki ...

  2. Redis 内存优化神技,小内存保存大数据

    大家好,我是「码哥」,大家可以叫我靓仔. 这次码哥跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤! 如何用更少的内存保存更多的数据? 我们应该从 Redi ...

  3. centos更改mac

    centos 6更改mac vim /etc/udev/rules.d/70-persistent-net.rules

  4. 阈值PSI代码

    阈值PSI 若交集数量超过某个给定阈值时,允许分布式的各个参与方在自己集合中找到交集,且除了交集外,得不到其他额外信息. 实现论文: Multi-Party Threshold Private Set ...

  5. 2022-07-09 第六组 润土 CSS学习笔记

    HTML:用来描述网页的一种语言. 超文本语言.动画.音频.视频.特效.超链. 用标签定义网页 浏览器 流行浏览器: IE微软宣布永久关闭 firefox火狐 Chrom谷歌 Sarifi vscod ...

  6. Winsock Server Code

    以下代码来自:https://msdn.microsoft.com/en-us/library/windows/desktop/ms737593(v=vs.85).aspx #undef UNICOD ...

  7. 2022徐特立科学营&BIT机器人队电控课程讲义

    目录 \(\cdot\)电控简介 \(\cdot\)认识单片机   什么是单片机   时钟-单片机的脉搏 \(\cdot\)外设及应用   GPIO   PWM   定时器   UART \(\cdo ...

  8. 10 Dubbo 配置实战

    Dubbo 配置实战 快速入门 dubbo 建议看这篇文章是在学习了快速入门 dubbo 那篇文章的基础上来学习 配置说明 文档地址 https://dubbo.apache.org/zh/index ...

  9. Codeforces Round #796 (Div. 2)(A~E题题解)

    文章目录 原题链接: A.Cirno's Perfect Bitmasks Classroom 思路 代码 B.Patchouli's Magical Talisman 思路 代码 C.Manipul ...

  10. 循环数组%操作下的一些解释(对于4.4UVA133的一些解释)

    1.循环数组一般不推荐通过建立相同的数组不断叠加来实现,虽然理论上是可行的,但是会浪费极大的空间,特别是对于大数据的情况下,程序一般会马上挂掉 2.循环数组的结构表示中的一种常用形式就是通过取余操作来 ...