参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是fork项目到自己仓库,然后把修改后的内容发送给项目管理者者请求合并,是否合并到项目由项目管理者决定。

本文以symphony项目为例,项目地址https://github.com/b3log/symphony

1.fork到自己仓库

项目主页

fork完成

2.clone到本地

获取仓库地址

clone到本地完成

3.添加远程仓库

把原始仓库添加到本地远程仓库列表中,作用是当原始仓库有更新时本地可以及时的把原始仓库的最新数据拉取到本地然后合并,这样就可以使本地仓库与原始仓库保持同步,然后基于原始仓库我们就可以扩展新功能或修复问题

原始仓库地址

添加到本地远程仓库列表

抓取远程仓库数据,可以看到sym仓库的分支被抓取下来了,origin指向的远程仓库是我fork到github上的地址,可以看到此时所有的分支都指向了同一个提交对象,都是最新的代码,并且本地分支还未创建,所以无需进行合并操作。如果本地分支已经创建,并且拉取的远程分支与本地对应的分支不在同一个提交对象上,那么我们才需要去合并他们,一般是把远程分支并入到本地分支,因为服务器上总是最新的代码。

4.建立对应的本地分支

执行git checkout -b 3.1.0-dev origin/3.1.0-dev 在本地新建一个3.1.0-dev分支并自动的把fork仓库的3.1.0-dev分支设置为跟踪分支,跟踪分支的作用是当在这个本地分支上指向git pull时自动就会去拉取fork库的数据然后自动合并入本地的3.1.0-dev分支中,注意当我们在clone fork库的时候git就自动把fork库的master设置为本地master的跟踪分支了。当然我们也可以把sym仓库的分支指定为本地跟踪分支,不过建议使用fork库,因为以后开发中主要操作的仓库是它,更新频率会比较频繁,而sym库我们仅在需要时拉取下最新数据而已,有新数据手动合并就好了。

5.总结

以上是我个人对如何参与到开源项目开发的见解和思路。

基本上就是那样,首先是fork,然后是clone,在然后是添加原始仓库地址(如果你很欣赏某项目,但对这项目的后续发展有了不同的看法,想在某版本后让其独立出来按自己的规划路线去发展,这种情况可以省略此步骤,因为它后面的更新与自己规划相冲突,没有拉取的必要了),最后就是开发了:无穷的拉取,合并,分支的创建和删除,提交,打标签,推送,给原始仓库发送pull request等操作。

如何更新你fork的repo?

使用github参与到开源项目的维护的更多相关文章

  1. 怎样在Github参与一个开源项目

    转载:http://www.csdn.net/article/2014-04-14/2819293-Contributing-to-Open-Source-on-GitHub 最近一年开源项目特别的热 ...

  2. 如何参与github上的开源项目

    今晚比较闲,于是乎装修了一下博客,顺便将一块心病(怎么参加github上的开源项目)解决了,最后发个文章总结下 这些是参考的链接 http://blog.csdn.net/five3/article/ ...

  3. 我参与 Seata 开源项目的一些感悟

    丁老师在他的知识星球邀请我回答以下一个问题: 我觉得这个问题非常有意思,姑且把它贴到公众号这里,与大家分享一下我对这个问题的一些感悟. 感谢丁老师的邀请问答: 在这里我就简单说下,我这段时间参与 Se ...

  4. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  5. 如何参与flink开源项目

    参与flink开源项目 https://flink.apache.org/how-to-contribute.html 1.回答社区问题 2.撰写bug报告 3.对于改进建议或新的特征 4.帮助别人并 ...

  6. Fragment为载体可自己主动布局的CardView(GitHub上写开源项目初体验)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...

  7. Pull Request的正确打开方式(如何在GitHub上贡献开源项目)

    Pull Request的正确打开方式(如何在GitHub上贡献开源项目) GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/f ...

  8. GitHub 优秀Android 开源项目

    阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...

  9. github 优秀的开源项目

    https://github.com/wlcaption/AndroidMarket---- 这是手机应用商店,包含应用的下载,用户中心等内容 https://github.com/wlcaption ...

随机推荐

  1. jquery加载单文件vue组件

    /**注册组件 */ function registerComponent(name){ dm[name] = {}; Vue.component(name + '-component', funct ...

  2. Linux-文件目录类命令

    l 文件目录类 pwd 指令 基本语法 pwd (功能描述:显示当前工作目录的绝对路径) 应用实例 案例:显示当前工作目录的绝对路径 ls指令 基本语法 ls [选项] [目录或是文件] 常用选项 - ...

  3. cadence help文件库调出指令 :cdnshelp

    cadence help文件库调出指令 :cdnshelp 指令参数记录: Verilog 添加可编译文件后缀名 -vlog_ext +.h,.vh Verilog1995 添加可编译文件后缀名 -v ...

  4. (转)Heartbeat+DRBD+NFS高可用案例

    原文:http://9861015.blog.51cto.com/9851015/1939521--------------------------------Heartbeat+DRBD+NFS高可 ...

  5. 生产html测试报告

    批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成 HTML 格式的.unittest 里面是不能生成 html 格式报告的,需要导入一个第三方的模块:HTML ...

  6. selenium+Python(定位 单选、复选框,多层定位)

    1.定位一组元素webdriver 可以很方便的使用 findElement 方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用 findElements 方法.定位一组对象 ...

  7. 转 Hibernate中cascade和inverse的作用

    Inverse和cascade是Hibernate映射中最难掌握的两个属性.两者都在对象的关联操作中发挥作用.1.明确inverse和cascade的作用inverse 决定是否把对对象中集合的改动反 ...

  8. HTML5离线资源缓存简介

    cache manifest 示例 要使用离线资源缓存,开发者首先要提供一个 cache manifest 文件 它列出了所有需要在离线状态下使用的资源,浏览器会把这些资源缓存到本地 下面就是一个 c ...

  9. win10中VirtualBox联网设置

    <分享>关于win10操作系统中VirtualBox无法桥接的解决方法 版权声明:本文为博主原创文章,未经博主允许不得转载. 升级win10,本来是一件很好的事,想好好体验一下新版本的感觉 ...

  10. touch-slide-image

    用htmls5+css3实现的在android和ios,以及wekit新版浏览器上实现手指滑动切换图片. https://github.com/navyxie/touch-slide-image