首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >给开源库提交 pr,让更多人知道你

给开源库提交 pr,让更多人知道你

作者头像
石燕平
发布于 2019-12-02 14:52:21
发布于 2019-12-02 14:52:21
1K00
代码可运行
举报
文章被收录于专栏:小石不识月_Leo小石不识月_Leo
运行总次数:0
代码可运行

如何去参与一个开源库的开发

我们经常看到一个开源库会有很多人一起去维护,像 vue,webpack 就会有很多大牛去维护。

看着这么多大牛去维护一个开源库,心里也直挠痒痒,很想自己也能一起去维护开源库。

很多人在平时开发中只是用到简单的 git 命令,比如 git clonegit branchgit checkout-bgit addgit commitgit push 这些命令,其实都只是 git 最基本的操作,有这些基本操作,我们想给开源库提 pr 还差一点。

下面我把我自己平时维护 git 库的经验做一个总结,也算是给一些想给开源库提 pr 同学的一些微小的帮助。

如果有更好的方法,可以评论补充一下,谢谢大家。

具体流程

想给开源库提 pr,第一步肯定是我们要有他们库,并且可以进行开发。接下来我就拿 vue 库做一个示例,看官们可以边看边和我一起操作。

1. fork 开源库

vue 库肯定不可能让我们直接提交,所以我们需要找到 vue 库,fork 到自己的 github 仓库中,然后在自己拷贝的 vue 仓库中操作。

登录 github,在 github 中搜索 vue。

点击 fork 按钮,把开源库 fork 到自己的 github 中。

回到我们自己的 github 中,就可以看到 fork 好的 vue 库了。

2. clone 库到自己本地

我们将 fork 好的仓库克隆到自己本地电脑上,然后进行开发。

克隆到本地:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 克隆 vuegit clone https://github.com/Shiyanping/vue.git
# 进入本地 vue 文件夹cd vue

这样你本地就有了 vue 的克隆版本了,后续就可以愉快的开发了。

3. 本地创建分支,进行开发

摩拳擦掌,开始吧,开发之前你要确定好具体开发哪个分支,因为我们拉下来的代码只有默认分支,但是有些开源库是有很多分支的,不同的功能或者不同的版本在不一样的分支上,这个在开发之前要确定好。

如果你只是开发默认分支,可以忽略下面的 开辟我们本地分支 过程,但是开发开源库,肯定避免不了切换不同的分支,还是建议跟着下面的操作执行一下。

开辟我们本地分支:

假设要开发 vue 库中的 weex 分支,这个时候需要借助 origin/weex 分支去开辟一个本地的新分支。origin/weex 就是自己 github 上的 vue 仓库中 weex 分支。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看具体有哪些分支git branch -r# 这个时候会将我们本地分支,自己 github 仓库分支都列出来。# 这里就不截图了,我们找到 origin/weex 分支,切换过去。
git checkout origin/weex# 这里不用管 git 提示,我们只是借助一下这个分支
# 接下来我们使用 origin/weex 分支,开辟一个我们本地的新分支git checkout -b weex

这个时候就有了本地的 weex 分支,来改动点东西,执行一下最熟悉的 git 提交代码的过程。

一顿操作之后(其实我只是简单改了说明文档,?),我们开始提交修改的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下面这些就不介绍了,大家都知道git status
git add .
git commit -m "修改说明文档"
git push --set-upstream origin weex

这个时候上自己的 github 上就可以看到自己提交的代码和分支了。

这个时候其实可以进行 pr,但是我们不能这么草率,毕竟这是给开源库提 pr,我们要小心翼翼,万一提上去一个审核不通过的,多尴尬。所以还有一些问题需要给大家交代一下。有些看官可能觉得我问题很多,但是这不是为了让大家更潇洒的提 pr 吗,所以有问题还是要说清楚的。

一个开源库,是有很多人一起开发的,我们目前开发 weex 分支,有其他人可能在你 fork 库之后,在你提 pr 之前提交了 weex 分支新修改,但是这个时候你本地库和你 github 仓库里面的代码都是旧的,这个时候你如果将刚才修改的代码提交到远程仓库,就会审核不通过,那上面一顿操作就相当于白瞎了,还丢人。

接下来就说如何解决这个问题。

4. 关联远程仓库,保证代码可以和远程同步

首先来看一下本地仓库有哪些关联的仓库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看当前关联的仓库git remote -v

因为本地仓库代码是刚拉下来,所以除了自己 github 的仓库以外,没有任何关联的仓库。

这个时候我们要将 vue 远程仓库进行一个关联:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 进行关联# git remote add 远程仓库别名 远程仓库地址git remote add upstream https://github.com/vuejs/vue.git# 执行之后不会有任何提示
# 再次查看本地相关联的远程库git remote -v

这个时候就关联上了 vue 远程仓库。

接下来使用 fetch 命令,把远程仓库最新的代码及分支拉取一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# git fetch 关联的别名git fetch upstream

执行之后,我们可以看到把 vue 远程仓库的所有分支代码都拉下来了。

后续我们在修改了某个分支的代码进行提交时,一定要将远端的仓库进行一个合并,我们可以使用下面的命令实现合并:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# git merge 远程仓库的别名/分支名git merge upstream/weex

如果没有改动,我们可以直接进行 pr;如果有改动,我们需要将合并的代码,也提交到我们自己 github 的仓库中,这样我们本地代码、自己远程仓库代码就和开源库 vue 原始仓库代码进行了同步。

记得在合并远程仓库代码的时候一定要先 fetch。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git fetch upstreamgit merge upstream/分支

5. 提交 pr

经过同步远程代码和提交自己修改的代码之后,我们就可以提交 pr 了,具体操作如下:

上自己的 github 上,如果是第一次提交非默认分支的代码,我们可以直接点击下图中的 Compare&pull request 按钮。

如果是提交已经存在的分支,比如默认分支,或者某个二次提交的分支,这个时候我们可以直接点击 Newpull request 按钮。

不管是上面那种方式,都会跳转到提交 pr 的界面:

前面的红框代表了要给哪个开源库哪个分支提交 pr,后面这个红框代表你要将哪个项目哪个分支给提交上去。

一定要选择对,别提交错了,提交错了一般人也不会给你合并的。

最后点击 Createpull request 按钮。

这样就大功告成了,等着开源库的作者给你合并 pr 吧,初次提交 pr 的喜悦还是很棒的。

总结

  • 在编写代码之前,一定要确定好自己要给哪个分支提交 pr,并且要在对应分支的基础上再创建自己本地的分支,否则合并原始仓库分支代码时,分支不同,会有很多冲突。

举个例子:你想开发 vue 的 weex,但是 vue 仓库默认分支是 dev,你没有根据 origin/weex 分支去创建本地分支,你直接在 dev 分支上合并了原始仓库的 weex 分支(git merge upstream/weex),这个时候就会有很多冲突,就算你解决掉了,你提交代码也不会有人给你通过。

  • 给开源库提 pr 的前提一定是要好好熟悉代码,不要瞎提,瞎提肯定不会有人给你合并,给开源库提 pr,如果被合并了,后续在你自己简历里边也是一个加分项,而且想给开源库提交 pr,会强制我们熟读代码,这样也能提升我们自己的基础。

有更好的办法,希望大家评论指出来,一起探讨,为了大家共同成长

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小石不识月 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
安全:nginx禁止ip访问, 只能通过域名访问
我的一个地方站(www.cxzaixian.com)曾经遇到过被无故断网的事情,阿里云给的原因是绑定了未备案的域名。
后端技术探索
2018/08/09
13K0
使用Nginx阻止别人域名跳转到自己服务器上
在Nginx上设置禁止通过IP或者通过未设置的域名访问访问服务器,只能通过已绑定的域名访问,这样做是为了避免别人把未备案或者有被隔离风险的域名解析到自己的服务器IP而导致服务器被隔离,有以下解决方案:
JPeng
2018/08/20
5.2K0
使用Nginx阻止别人域名跳转到自己服务器上
nginx 关闭默认站点的方法
当别人把垃圾域名转向至你的服务器时, 如果不采取措施,那么后果不堪设想。 国内机房一般都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。 Nginx默认的虚拟主机允许用户经过IP访问,或者经过未设置的域名访问(比如有人把他本人的域名指向了你的ip)你的VPS或服务器。 默认情况下,只要将域名解析到VPS的IP上,就可以访问安装lnmp的VPS。 如果想避免这种情况的出现,可以修改nginx.conf ,将默认的虚拟主机修改为如下即可屏蔽未绑定域名访问: 复制代码 代码如下: server { listen 80 default; return 500; } 也可以把这些流量收集起来,导进到本人的网站,只需做以下跳转设置就可以: 复制代码 代码如下: server { listen 80 default; rewrite ^(.*) http://cqgua.com permanent; } 以此类推, 禁止通过IP访问,可以写成: 复制代码 代码如下: server { listen 80 default; server_name _; return 500; }
习惯说一说
2019/04/17
5.3K0
如何禁用空主机头
一、Nginx 空主机头禁止 如果 Nginx 配置了空主机头,那么任意域名解析指向到服务器IP,都可以访问站点,为了防止域名解析恶意指向主机,可以将 Nginx 默认的空主机头禁止,方法是通过修改 Nginx 的主配置文件 nginx.conf ,使其主机头返回错误信息 500
joshua317
2024/03/09
9290
如何禁用空主机头
nginx禁止ip访问,允许域名访问如何配置
这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。
用户2471797
2022/10/27
11.5K0
nginx 关闭默认站点、空主机头(禁止IP直接访问、防止域名恶意解析、防止多站点莫名跳转)
NGINX 在默认情况下,直接输入IP,会访问服务器中已存在的站点。如果只解析域名,未绑定,也会出现此情况。为防止域名恶意解析,防止同服务器多站点时使用IP访问莫名跳转,或禁止IP直接访问。
zhaoJian.Net
2024/01/09
2.4K0
Nginx网站重定向
首先需要更改/usr/local/nginx/conf/nginx.conf的配置文件,如下
Tacc
2022/01/11
6.7K0
Nginx网站重定向
nginx禁止使用IP访问
当前服务器支持两个网站:site1.tenmao.cn和site2.tenmao.cn
十毛
2022/10/25
4.8K0
防止域名被恶意解析
域名的恶意解析,可以用于借刀杀人。 这个手法很骚,轻则可以将对手的SEO排名拉低,重则可以让工信部封杀其站点。
我是leon
2019/08/28
9.4K1
Nginx的几个常用配置和技巧
有很多服务通过nginx访问,但本身没有提供账号认证的功能,就可以通过nginx提供的authbase账号密码认证来实现,可以用以下脚本来生成账号的密码
本人秃顶程序员
2019/05/07
1.2K0
Nginx的几个常用配置和技巧
12.14 Nginx访问控制
Nginx访问控制目录概要 需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下: location /admin/ { allow 192.168.74.129; allow 127.0.0.1; deny all; } mkdir /data/wwwroot/test.com/admin/ echo “test,test”>/data/wwwroot/test.com/admin/1.html -t && -s reload curl -x127.0.0.1:80
运维小白
2018/02/06
3.1K0
nginx 禁止ip直接访问,防止恶意解析
找到 nginx 的默认配置文件 nginx.conf 编辑文件找到 默认的80 server
Alone88
2019/10/22
6.1K0
第十一章·Nginx常见问题
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
8010
第十一章·Nginx常见问题
Ubuntu下安装nginx及使用
首先介绍以下nginx。下图来自百科介绍:详细介绍地址:https://baike.baidu.com/item/nginx/3817705?fr=aladdin 在我们平时的开发娱乐中,也许并不会涉
用户2417870
2019/09/18
1.7K0
Ubuntu下安装nginx及使用
linux学习第四十六篇:Nginx防盗链,Nginx访问控制,Nginx解析php相关配置,Nginx代理
Nginx防盗链 vim /usr/local/nginx/conf/vhost/test.com.conf 配置如下,可以和上面的配置结合起来: location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; //定义白名单 if ($invalid_re
用户1215343
2018/02/05
1.7K0
linux学习第四十六篇:Nginx防盗链,Nginx访问控制,Nginx解析php相关配置,Nginx代理
宝塔面板设置禁止通过IP直接访问网站防止恶意解析
宝塔服务器管理是现在非常流行的一款免费的Linux管理应用,作为不想做过多运维操作的可以使用这个可视化操作
沈唁
2018/07/26
9K0
宝塔面板设置禁止通过IP直接访问网站防止恶意解析
nginx添加多个网站禁止ip访问
如果想添加多个网站,添加多个server{}并绑定不同的域名,设置不同的根目录即可。
taoli
2022/09/30
3.5K0
Nginx限制IP访问只允许特定域名访问
为了我们的服务器安全,我们需要禁止直接使用 IP 访问我们的服务器,我们可以借助 [Nginx]完成 1、找到 nginx 的配置文件 cd /usr/local/nginx/conf/ 找到 nginx.conf 文件 编辑它 2、添加新的 server # 禁止ip访问 server { listen 80 default_server; listen 443 ssl default_server; server_name _; return 403; } 注意是
入门笔记
2022/06/03
11.2K0
Nginx限制IP访问只允许特定域名访问
hugo博客部署到腾讯云轻量级服务器
我买的服务器是腾讯云的轻量级服务器,双十一的时候打折买的,3年144元,还有一个域名3年89元,如果是学生或者经济紧张可以考虑节日的时候买。
素履coder
2022/02/17
3.3K1
hugo博客部署到腾讯云轻量级服务器
Nginx只允许域名访问禁止ip访问
我们的做法是新加一个80端口配置,记得把上面配置中80端口后面的default_server删掉,不然重新加载的时候会报错
素履coder
2022/02/17
16.4K0
Nginx只允许域名访问禁止ip访问
推荐阅读
相关推荐
安全:nginx禁止ip访问, 只能通过域名访问
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
加入数据技术趋势交流群
大数据技术前瞻 数据驱动业务实践
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档