如何在5分钟内做出你的第一个开源贡献
提高编程技能的最好方法是编写更多代码。第二种最好的方法是阅读别人的代码。
还有什么比在开放源码项目中协作更好的方法呢? 本文将介绍一个能够帮助你开始对开源做出贡献的项目—First contributions
- 它在GitHub上的地址:https://github.com/Roshanjossey/first-contributions/blob/master/README.md
如果你的电脑上尚未安git, 请按照下面的安装指引进行安装。
- 安装指引:https://help.github.com/articles/set-up-git/
Fork(复制)本代码仓库
点击图中的按钮去Fork这个代码仓库。 这个操作会将代码仓库复制到你的账户名下。
Clone(克隆)代码仓库
接下来,将复制后的代码仓库克隆到你的电脑上。点击图中的绿色按钮,接着点击复制到剪切版按钮(将代码仓库地址复制下来)
随后打开命令行窗口,输入如下的git命令:
git clone "刚才复制的 url 链接"
“刚才复制的 url 链接”(去掉双引号)就是复制到你账户名下的代码仓库地址。获取这链接地址的方法请见上一步。
比如:
git clone https://github.com/你的Github用户名/first-contributions.git
‘你的Github用户名’ 指的就是你的Github用户名。在这一步,你将复制到你账户名下的first-contributions这个代码仓库克隆到本地电脑上。
新建一个分支
下面的命令能在命令行窗口中,把目录切换到 first-contributions
cd first-contributions
接下来使用 git checkout
命令新建一个代码分支
git checkout -b <新分支的名称>
譬如:
git checkout -b add-myname
(新分支的名称不一定需要有* add 。然而,在新分支的名称加入 add *是一件合理的事情,因为这个分支的目的是将你的名字添加到列表中。)
对代码进行修改,然后Commit(提交)修改
打开 Contributors.md
这个文件,更新文件内容,将你的名字加上去,保存修改。git status
这命令会列出被改动的文件。接着git add
这命令则可以添加你的改动,就像如下这条命令。
git add Contributors.md
现在就可以使用 git commit
命令 commit 你的修改了。
git commit -m "Add <你的名字> to Contributors list"
将 <你的名字>
替换为你的名字
将改动 Push(发布)到 GitHub
使用 git push
命令发布代码
git push origin <分支的名称>
将 <分支的名称>
替换为之前新建的分支名称。
提出 Pull Request 将你的修改供他人审阅
前往 Github 你的代码仓库,你会看到一个 Compare & pull request
的按钮。点击该按钮。
接着再点击 Create pull request
按钮,正式提交 pull request。
额外的信息
我们假定你之前已经完成了基本的教程。附加的信息将提供关于高级Git技术的一些信息。
从存储仓库中删除分支
该文档提供了如何从存储库中删除分支的信息。
- 只有在你的pull request被合并后才执行下面步骤。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/removing-branch-from-your-repository.md
将你的fork与存储库同步
该文档提供了关于如何使你的分叉(forked)存储库与基本存储库保持同步的信息。这很重要,希望你和其他人能够为这个项目做出贡献。
- 如果你的fork在parent库中没有任何更改,请遵循这些步骤。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/keeping-your-fork-synced-with-this-repository.md
重新提交
这个文档提供了关于如何在远程存储库中恢复提交的信息。当你需要撤销已经被推到Github的提交时,它会很方便。
- 如果你想要重新提交,就采取这些步骤。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/reverting-a-commit.md
修改提交
这个文档提供了关于如何在远程存储库中修改提交的信息。
- 当你需要调整你的提交时,使用这个办法。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/amending-a-commit.md
撤销一个本地提交
这个文档提供了关于如何撤销本地存储库中的提交的信息。这是当你感到你已经将本地存储库弄乱并希望重新设置本地存储库时需要做的事情。
- 如果你想撤销/重置本地提交,请执行以下步骤。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/undoing-a-commit.md
解决合并冲突
这个文档提供了关于如何解决合并冲突的信息。
- 采取这些步骤来解决恼人的合并冲突。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/resolving-merge-conflicts.md
删除一个文件
该文档提供了如何从本地存储库中删除文件的信息。
- 按照以下步骤学习如何在提交之前删除文件。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/removing-a-file.md
将提交转移到不同的分支
这个文档提供了关于如何将提交转移到另一个分支的信息。
- 采取这些步骤将提交转移到另一个分支。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/moving-a-commit-to-a-different-branch.md
配置git
本文提供了关于如何在git中配置用户细节和其他选项的信息。
- 使用它来更好地控制你的git配置。
https://github.com/Roshanjossey/first-contributions/blob/master/additional-material/configuring-git.md
为什么要为开源项目贡献自己的力量呢?
对开源项目做出贡献是有很多好处的,比如有很多乐趣,提高你的技能,结识志同道合的人,找到很棒的导师,还会对你的职业生涯有所帮助等等。尽管如此,我还是觉得每个人都应该有自己的贡献。
这里是人们为开源贡献的原因的汇编:https://github.com/nickdesaulniers/What-Open-Source-Means-To-Me
- Git 项目推荐 | 开源 PHP 加密运行扩展
- Git 项目推荐 | 基于 J2Cache 的多级缓存框架
- 如何将生产环境的字段类型从INT修改为BIGINT
- 如何高效的使用PowerShell备份数据库
- Git 项目推荐 | Java 版按键精灵
- Elasticsearch-精确查找
- Git 项目推荐 | 图片验证码生成库
- Elasticsearch-深入理解索引原理
- Git 项目推荐 | html5 异步批量上传插件
- 老司机带你过常规WAF
- Git 项目推荐 | javascript ajax 代理调用工具
- Hive 时间日期处理总结
- 孤立的SQL用户
- 如何卸载CDH(附一键卸载github源码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据分析与数据挖掘 - 08图形绘制
- 数据分析与数据挖掘 - 09邻近算法
- 字符串-AC自动机(详细图解)
- 挖洞经验 | Google Play Core Library中的代码执行漏洞
- 设计模式-七大原则(图解一目了然)
- 公平组合游戏-巴什游戏、尼姆游戏和SG函数
- 数据库应用技术系列第一讲 创建数据库和表
- 怎样让数据库再快一点?
- 大数据场景下,如何快速将Linux 大文件处理小
- Mysql系列第十六讲 变量详解
- Mysql系列第十七讲 流程控制语句(高手进阶)
- 私藏的5个好用的Pandas函数!
- 漫画:如何在数组中找到和为 “特定值” 的两个数?
- 当你在百度搜索关键字的时候,哪个网站会排在最前面?今天给大家科普一下“网站SEO”
- Mysql系列第十九讲 异常捕获及处理详解