为开源提 PR
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的更多相关文章
- 记录第一次给开源项目提 PR
本文是深入浅出 ahooks 源码系列文章的第八篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本篇文章算是该系列的一个彩蛋篇,记录一下第一次给开源项目提 PR ...
- 怎么给开源项目提PR?
1. fork 你要的项目 2. 下载到本地 相关步骤如下 在你需要的文件夹下面,右键 git bash 命令,打开 git 命令框 执行如下指令可将项目代码下载到当前目录 ~~~ git clone ...
- 如何参与开源项目 - 细说 GitHub 上的 PR 全过程
目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...
- 给ShardingSphere提了个PR,不知道是不是嫌弃我
说来惭愧,干了 10 来年程序员,还没有给开源做过任何贡献,以前只知道嘎嘎写,出了问题嘎嘎改,从来没想过提个 PR 去修复他,最近碰到个问题,发现挺简单的,就随手提了个 PR 过去. 问题 问题挺简单 ...
- fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因
很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...
- 算法工程师想进一步提高竞争力?向TensorFlow开源社区贡献你的代码吧
算法工程师为什么也要向社区贡献代码? [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] “做算法的人要熟悉算法框架源码吗?算法工程师难 ...
- 记一次Apache Carbondata PR的经历
前言 前段时间有幸接触到Apache Carbondata,试用过程中发现了一个小小的问题,并且又很快的定位到了问题.然后在社区群里反映了下,负责人问愿不愿意提个JIRA,PR,然后我在没有任何开源 ...
- PouchContainer 开源版本及内部版本一致性实践
PouchContainer 开源版本及内部版本一致性实践 为什么要做内外版本一致 对外开源是提升影响力.共建生态的有力手段.在项目对外开源的过程中,首先是将可以开源的部分抽离出来,发布一个“开源版本 ...
- 微服务开源生态报告 No.7
「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...
随机推荐
- 无语怎么这么简单!——python实现中文字幕雨+源代码(源码可赠)
大家好鸭,我是小熊猫 最近浏览了很多关于用Python和Pygame实现代码雨的案例,发现很多都是没有深入讲解代码的整个实现过程,从0到1教会你制作中文文字雨(其实啥字好像都可以). 然后在介绍的过程 ...
- 给你准备好了——50道Python面试题集锦(附答案)
Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面试中脱颖而出,找到一份高薪工作.这些面试题涉及P ...
- mariadb安装配置(主从配置)
主服务器192.168.206.183 从服务器192.168.206.193 1.创建并编辑 /etc/yum.repos.d/MariaDB.repo文件(主从都要做) [mariadb] nam ...
- 2019 CSP-J 初赛解析
题面,成绩不是真实水平,就挑重点说一说 老师给的解析 T5 这是二分查找,属于是我的代码理解不太对 我的理解 #include<iostream> using namespace std; ...
- 关于C标准库stdarg.h
看<数据结构(C语言版)>(严蔚敏)时看到p94上面va_list啥的,看不懂了,于是整理一下这一部分的知识. 1/当无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表. i ...
- 清理忽略springboot控制台启动的banner和启动日志
清理忽略springboot控制台启动的banner和启动日志 1.springboot的banner spring: main: banner-mode: off 2.mybatis-plus的ba ...
- 万答#15,都有哪些情况可能导致MGR服务无法启动
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 本文转载自微信公众号 "老叶茶馆" 欢迎大家关注! 1.都有 ...
- 关于 java 的动态绑定机制
关于 java 的动态绑定机制 聊一聊动态绑定机制, 相信看完这篇文章,你会对动态绑定机制有所了解. 网上大多一言概括: 当调用对象的时候,该方法会和该对象的内存地址/运行类型绑定. 当调用对象的属性 ...
- MySQL查询性能优化七种武器之索引潜水
有读者可能会一脸懵逼? 啥是索引潜水? 你给起的名字的吗?有没有索引蛙泳? 这个名字还真不是我起的,今天要讲的知识点就叫索引潜水(Index dive). 先要从一件怪事说起: 我先造点数据复现一下问 ...
- 手把手教你分析MySQL查询性能瓶颈,包教包会
当一条SQL执行较慢,需要分析性能瓶颈,到底慢在哪? 我们一般会使用Explain查看其执行计划,从执行计划中得知这条SQL有没有使用索引?使用了哪个索引? 但是执行计划显示内容不够详细,如果显示用到 ...