Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
开发者 git日常操作备忘录
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/briblue/article/details/86610674
Frank909
2019/01/28
3820
Git安装、配置、常用使用
然后输入密码,生成密钥,然后去提示的路径里面找到id_rsa.pub,把它里面的信息复制到git的SSH Keys上
Mirza Zhao
2023/09/26
7870
Git安装、配置、常用使用
KnowStreaming贡献流程
上面是将didi/KnowStreaming添加为远程仓库, 当前就会有2个远程仓库
石臻臻的杂货铺[同名公众号]
2022/10/28
8120
KnowStreaming贡献流程
如何fork自己的github库?
Github上我们经常fork其他人的代码,然后经过一通魔改后弄出"自己"的东西。但是现在我遇到了这么一个需求,就是我已经公开了一个自己的库(暂且叫parent),然后我想基于自己开发的库再创建新的功能,但是又不想让新功能公开,一个很自然的想法是库parent保持公开,然后新创建一条分支隐藏,可惜的是github并不支持这个功能。所以一个可行的办法就是fork自己的库,但是不是直接fork,因为你也没法fork自己的库,间接实现的方法如下:
marsggbo
2020/06/12
1K0
【Git】五、多人协作
​ 对于其中的开发者1,我们可以直接使用我们的云服务器,在上面进行新增;而对于开发者2,我们可以在 windows 下操作!
利刃大大
2025/02/22
1810
【Git】五、多人协作
Git的分支工作流与Pull Request
  上一篇文章介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增、提交进行管理,可以查看提交历史、代码差异等功能。但实际上git有一个重量级的功能“分支”,git的分支与其它工具的分支不同,git分支的操作完全在本地进行,所以可以快速的创建和切换。
星哥玩云
2022/07/24
8730
Git的分支工作流与Pull Request
git实用指南
个人整理的一些常用的 Git 概念和命令集合,方便速查和快速解决某些场景下的问题,覆盖了日常开发和协同工作下的一部分场景,不只是命令行的介绍。欢迎关注语雀原文,持续更新!
步履不停凡
2019/08/23
5630
git实用指南
Git 实用技巧记录,看这篇你就明白了!
如果我们希望能够快速了解或体验一下 Git 的操作的话,我这里推荐搭建前往这个网站进行学习,其不需要我们安装工具,而且我们的每一步操作都可以在右侧实时看到状态,对于我们学习和理解 Git 工作方式和原理非常有帮助的。—— 欢迎光临 => https://oschina.gitee.io/learn-git-branching/
小明互联网技术分享社区
2021/11/12
5030
git 命令大全
阮一峰 git 学习 :https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
xyzzz
2020/12/12
6750
git 命令大全
GitHub-分支管理03-多人合作【重点】
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。
踏歌行
2020/10/15
4230
Git技术干货!工作中Git的使用实践和常用命令合集!
从本质上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。
洋仔聊编程
2020/08/02
6480
工程化专题之Git前言Github && Git 中的一些重要概念 Git在实际中的使用方式Git常用命令总结
一个专业的程序员,怎么能不掌握Git呢?版本控制领域,已经发展了一段时间,从古老的CVS,到SVN集中式管理,再到现在的Git。由于Git的分布式、everything is local、分支等诸多特性,让越来越多的项目开始从SVN迁移到Git进行管理。本篇博客将介绍Git的一些重要概念、实际工作中Git的一些使用方式、背后涉及的一些原理思想等。如果你还对Maven感兴趣,可以阅读:
用户2890438
2018/08/20
7600
Git 常用命令清单笔记
这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加的,后面慢慢增加了许多内容,可以看出的的学习轨迹。分享出来方便自己查看,也许能帮助到你。
小弟调调
2018/09/11
8820
Git入门学习到进阶3
但是在GitHub上,利用Git极其强大的克隆和分支功能,广大人民群众真正可以第一次自由参与各种开源项目了。
全栈工程师修炼指南
2022/09/28
6050
Git入门学习到进阶3
如何在github上提交PR(Pull Request)
github 上有很多优秀的开源项目,很多时候我们不仅仅只是满足于使用,同时也想一起参与开源项目的开发,贡献自己的代码。今天这篇文章就给大家介绍一下如何在 github 上提交 PR,让我们一起为开源社区做贡献。
astonishqft
2022/05/10
9K0
如何在github上提交PR(Pull Request)
关于 Git 的那些事
安装应该不用多说了,主要讲一下升级。Linux 和 Mac 都有包管理器,升级是很方便的,关键是 windows 并没有这类东西,那么怎么升级呢?
Chor
2020/06/01
1.2K0
4. Git 分支操作和远程协作
Git 鼓励开发者频繁使用分支,正是因为有着这些特性作保障。Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。(译注:将 HEAD 想象为当前分支的别名。)
acc8226
2022/05/17
9240
常用Git命令和操作(github)
git和github是不同的概念,git是版本控制工具,github是托管 Git项目的云端平台。
张子阳
2018/09/29
6900
Git分支工作流的一些笔记
「 今又不知怎的,想起班长时常讲的两句话,一句你认为对的你就去做,一句你想到别人别人才会想到你,很简单的话,受益终身,回来后,每当彷徨时,就会想到,遇到喜欢的姑娘,感觉自己太水了,自卑到主动聊天都不敢,会想到。感觉和同学关系很疏远,会想到。人生很短,退役数年,多了太多身不由己,言不由衷,感恩相遇,祝好----山河已无恙」
山河已无恙
2023/01/30
4640
Git分支工作流的一些笔记
一篇文章全面了解Git!
Hello小伙伴们,不知道大家在开发中会不会遇到团队协作的难题呢,其实团队协作在开发中很重要,能够自动化的将不同人的工作合并减少很多人力,Git就是一个很好的团队协作工具,而且Git还能够用来对版本进
萌兔IT
2019/07/26
4140
一篇文章全面了解Git!
相关推荐
开发者 git日常操作备忘录
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验