Foreword

  github是一个很火的代码托管服务网站,可能好多人都想参与一两个项目玩一玩学习一下,但由于是纯英文的网站,可能又会止步于想法上没有动手实践。接下来我就介绍一下参与github上开源项目的大致流程,以及注意的地方。当然这里不会详细介绍git的使用,看懂本文还得需要参考其他资料,学习git的相关使用方法。

大致流程

  一、首先需要在github上注册账号并登陆,这个不多说了

  二、安装git,到github官网下载安装包。

     在这里我用的是github for windows。安装好后会有一个图形界面和一个Git Shell。图形界面还用不了^_^,就以Git Shell介绍下边的内容吧

  三、为账号添加添加ssh key

    clone项目到本地不需要身份认证,但要push修改到github上需要身份验证。push修改时走ssh协议,所以这里需要将我们的公钥添加到github账号中。这里就是ssh实现无密码登陆,或者所谓的公钥登陆,就是采用了私钥确定唯一身份的原理。

    1、生成密钥对。运行Git Shell执行以下命令:

      

      一直按 enter键生成密钥对,最终显示这个画面:

      

      这时在你的家目录下的.ssh目录下生成了id_rsa、id_rsa.pub两个秘钥文件,我的是windows,所以在C:\Users\Administrator\.ssh目录下。

    2、添加公钥到github上

      点击github上的设置按钮进入如下界面,然后点击SSH keys

      

      点击 Ad SSH key 打开添加公钥页面:

        

     打开生成的id_rsa.pub文件,复制内容,注意不要变动其内容。然后粘贴到上面的Key输入框里,Title输入框可以随便起个名字。然后点击 Add key即添加完成。

   3、在本地使用刚刚生成的私钥,执行如下命令:

    

  四、fork你想参与的开源项目

     浏览git上的开源项目,然后点击fork,

    

    这时就跳转到了你的账号下,此项目就是你账号下的一个项目了

    

    fork就相当于把别人的项目克隆到自己的账号下一份,以后你的修改都应是提交到你自己github账号下的这个项目中,你是没有权限直接push到原作者账号下的项目中的

  五、clone项目到本地

    1、复制项目clone地址

      注意是clone自己账号下的项目地址,不是原作者的,原作者的你虽然也可以clone到本地,但是你是没push权限的。还要注意这里咱们使用ssh协议,所以要选择ssh类型的地址,如图:

      

    2、clone 到本地,

       在命令行下 输入 git clone 并将复制的地址添加上,然后执行

      

      然后就可以cd进项目目录了

  六、将项目原地址添加为远程仓库

    复制原作者的项目地址,添加为自己的一个远程仓库,用来实时将原项目的修改更新到咱们本地并合并。注意也是复制ssh协议类型的地址哦

      

    使用 git remote -v可以看到我们有两个仓库一个origin,咱们自己的github仓库;一个upstream,原作者的远程仓库。当然也可以不用upstream这个名字。

  七、创建branch,用于添加自己的修改

    这只是一个约定成俗的方式,当然你也可以在master上添加修改,创建新的branch添加自己的修改的好处是,你可以同时添加多个修改,在一个修改还没有被原作者merge时,你可以用master创建新的branch继续你的其它修改。

    在这里我们在新添加的分支上修改:执行如下命令

      git branch test  //创建你test分支

      git checkout test//切换到test分支

    然后就可以添加我们的修改了

  八、将修改push到我们的github上

    由于我们的github上还没有test分支,所以我们得把命令写全了:git push origin test:test

  九、pull request

    你的修改已经push到了你的github下了,但是你要向原作者请求合并到原项目中,如果原作者合并了,也就意味着你是此项目的贡献者了。

    到你的github上点击如下按钮

    

    当然你也可以选择test分支,,然后点击项目右边的创建一个pull request。

    提交完pull request,原作者就会看到你的合并请求,采不采纳就是他的事了^_^。

注意事项

  1、clone时一定要注意选择ssh协议的链接。否则可能导致clone失败,或者后续push失败

  2、将公钥添加到github后,一定要更新自己当前的私钥(命令:ssh-add ~/.ssh/id_rsa),否则会push失败

参与github上开源项目的大致流程和注意事项的更多相关文章

  1. Android github上开源项目、酷炫的交互动画和视觉效果地址集合

    Android上开源的酷炫的交互动画和视觉效果:http://blog.csdn.net/u013278099/article/details/50323689 Awesome-android-ui: ...

  2. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  3. 移动网络游戏实现流程——并借此阐明pomelo在GitHub上各个项目间的关系

    <!DOCTYPE html> 摘要:本文通过一个简易流程图介绍如何基于Cocos2d-x引擎和pomelo服务器框架开发一个移动网络游戏.并借此阐明pomelo提供的各个项目间的关系. ...

  4. 【转载】【技巧总结】PyCharm怎么克隆github上开源的项目

    PyCharm怎么clone github上开源的项目 一.先要确保PyCharm正确的配置了Git   如果你已经在PyCharm中配置好了Git,可以跳过此步骤,直接看下一步.   那么怎么在Py ...

  5. OData.NET已在 GitHub上开源

    OData.NET已在 GitHub上开源 微软最近已将OData .NET所有类库的源代码全部发布在GitHub上. 以下与OData相关的项目目前都已迁移到GitHub上: ODataLib Ed ...

  6. github优秀开源项目大全-iOS

    github优秀开源项目大全-iOS APR 25TH, 2014 前言 本文旨在搜集github上优秀的开源项目 本文搜集的项目都是用于iOS开发 本文会持续更新… 完整客户端 ioctocat g ...

  7. Github安卓开源项目编译运行

    转:http://blog.csdn.net/laihuan99/article/details/9054985 很多新手朋友朋友在Github搜索开源项目时,有时候不明白怎么导入eclipse.的确 ...

  8. 如何在github下载开源项目到本地(Coding iOS 客户端为例)

    一.前言 以 Coding iOS 客户端 为例讲解如何在github下载开源项目到本地 github地址:https://github.com/Coding/Coding-iOS 二.分析 根据项目 ...

  9. 如何从eclipse中下载并导入Github上的项目

    eclipse导入项目,方法就是点击File ->Import,选择Existing Projects into Workspace 但前提是,你导入的这个项目原本就是用eclipse的构建的, ...

随机推荐

  1. iOS 时间戳的转换

    在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateForma ...

  2. [leetcode 27]Implement strStr()

    1 题目: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if ...

  3. 原生Ajax封装随笔

    XMLHttpRequest 对象用于和服务器交换数据.我们使用 XMLHttpRequest 对象的 open() 和 send() 方法: open(method,url,async) metho ...

  4. 压力测试工具ab使用

    ab全名是apache bench,是apache自带的一款压力测试工具.它通过创建多个线程来模拟并发,测试目标是基于URL的,因此不论是什么web服务器都可以支持. 使用ab非常简单,进入apach ...

  5. Python自动化测试(1)-自动化测试及基本技术手段概述

    生产力概述 在如今以google为首的互联网时代,软件的开发和生产模式都已经发生了变化, 在<参与感>一书提到:某位从微软出来的工程师很困惑,微软在google还有facebook这些公司 ...

  6. Homework_4 四则运算 - C#版

    题目要求 :http://www.cnblogs.com/gdfhp/p/5311937.html 结对同伴: 姓名:胡仕辉   学号:130201225   博客地址:http://www.cnbl ...

  7. JavaScript—之对象参数的引用传递

    变量 1.JavaScript hoisting >>请看例子,我们拿Chrome的console作为JS的运行环境. 上面直接执行console.log(a), 不带一点悬念地抛出了no ...

  8. 如何在 Ubuntu 15.04 上安装带 JSON 支持的 SQLite 3.9

    欢迎阅读我们关于SQLite 的文章,SQLite 是当今世界上使用最广泛的 SQL 数据库引擎,它基本不需要配置,不需要设置或管理就可以运行.SQLite 是一个是公开领域(public-domai ...

  9. 缓存篇(Cache)~第一回 使用static静态成员实现服务器端缓存(导航面包屑)

    返回目录 今天写缓存篇的第一篇文章,在写完目录后,得到了一些朋友的关注,这给我之后的写作带来了无穷的力量,在这里,感谢那几位伙伴,哈哈! 书归正传,今天我带来一个Static静态成员的缓存,其实它也不 ...

  10. excel怎么固定第一行

    这里给大家介绍一下怎么固定表格的第一行,或者说怎么固定表格的表头. 1.我这里有一个成绩表,希望固定住其第一行. 2.选择单元格A2 注意:你只需要选择所要固定行的下一行的任一单元格即可!!! 3.然 ...