参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是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. 最受欢迎的5款Node.js端到端测试框架

    测试,尤其是自动化测试在现代 WEB 工程中有着非常重要的角色,与交付过程集成良好的自动化测试流程可以在新版发布时帮你快速回归产品功能,也可以充当产品文档.测试因粒度不同又可以分为单元测试.接口测试. ...

  2. cucumber & selenium & bddtest

    目录 1.Cucumber介绍 refer link: 2.使用步骤 2.1 引入依赖 2.2新建test.future文件 2.3在resource目录下创建cucumber.bat,执行bat,c ...

  3. Python+Selenium之常用模块

    要用webdriver:from selenium import webdriver eg: driver = webdriver.Chrome()      driver.maximize_wind ...

  4. ios UISearchDisplayController 实现 UITableView 搜索功能

    UISearchDisplayController 是苹果专为 UITableView 搜索封装的一个类. 里面内置了一个 UITableView 用于显示搜索的结果.它可以和一个需要搜索功能的 co ...

  5. JSP页面GET传值乱码问题

    两个JSP页面进行GET传值的时候.两个页面的编码都是UTF-8,且传值之前设置response的content为UTF-8也解决不了问题. 设置tomcat的配置文件server.xml:在Conn ...

  6. Android新手常见问题(一)

    [1]AAPT2 error: check logs for details File->Settings->Build->Gradle一看path里有中文 最根本的原因是因为use ...

  7. SQL索引器

    1.什么是SQL索引器 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 例如这样一个查询:se ...

  8. ansible roles 目录规范

    我的ansible roles项目的目录结构: (ansible_venv) [root@localhost ansible_home]# tree ansible_playbooks/ ansibl ...

  9. 【find】Linux中find常见用法示例

    1.根据 某个名字在某个目录下进行查找 find /etc/ -name "*.conf" 在/etc/目录下 查找 后缀名为conf 的文件

  10. Git中.gitignore, 忽略追踪

    在目录下 创建: .gitignore文件,将不需要被追踪的文件地址, 写在该文件中, 此时git软件就不会追踪列出的文件进行版本同步: windows不允许创建没有文件名的文件,可以用编辑器创建.g ...