博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在GitHub上大显身手?
阅读量:5795 次
发布时间:2019-06-18

本文共 2013 字,大约阅读时间需要 6 分钟。

本文转载自公众号「良许Linux」。良许目前就职于一家世界500强外企,专注于Linux应用开发,欢迎学习Linux,C/C++,Python的朋友关注!

码农朋友们都知道,gitHub是一个面向开源及私有软件项目的托管平台,上面托管了众多的优秀的项目,比如linux内核源码、git源码、机器学习框架tensorflow等等。当然,除了这些顶尖项目外,还有海量的高手开发的优秀项目。所有的这些项目,我们都可以为它贡献代码。

那么,要如何为这些项目贡献代码呢?我们下面以实例来讲解。

比如说,现在gitHub上有个很牛逼的项目githubTest,它的作者是Alvin,项目地址如下:

https://github.com/yychuyu/githubTest

58970b176110ef2ee84b1c905c5b17002c63333c

现在Harry看到了这个项目,想要对它进行贡献代码。想要达到这个目的,Harry要完成下图的这些步骤:

1854bd67315b96a94588361daded491d65f10a0b

1. fork

Harry在找到这个项目之后,点击右上角的「fork」按钮。稍等片刻后,就会在Harry的账号下克隆了一个一样的项目githubTest,包括文件,提交历史,issues,和其余一些东西。

b1d4bf32e91de6fbed75cd37d23e8e22d26f10e4

2. clone

通过fork之后,Harry的账号下也有了githubTest这个项目,但还不能对它进行编译、修改(其实是可以修改,但是不建议)。

这时,可以通过git clone命令,将这个项目clone到自己的电脑里。

f6e9435a0053d18ef0065f06ebd2d081633485d8

3. update a file & 4. commit

接下来,Harry就可以大显身手了,可以自由对这个项目进行修改。但是,不建议在master分支直接修改,建议在master分支基础上切出一个dev分支,然后在dev分支上自由发挥。修改完之后,再将dev分支merge到master分支。

f2daf8b1f61aa903b1c917233603b75118434996

5. push

在自己的电脑上修改好代码之后,再使用git push命令将改动同步到自己的gitHub项目仓库里。

c281bae1a0189d316e826e4f429c2485e6c62b9d

通过这个操作后,就可以在代码仓库里看到自己的提交了。

7c145e4fab86d5fe6ac1e5230080b3fdec05b2cc

6. pull request

接下来,就是向原作者Alvin提交你的代码了。首先点击文件列表上的「New pull request」。

de8a89ae01e11c6179e6f553dc8feae3a2e6aad7

6. pull request

接下来,就是向原作者Alvin提交你的代码了。首先点击文件列表上的「New pull request」。

40abc286375fc9f86fedd3b345dbb12864ad5332

之后,gitHub会自动对源仓库分支及自己仓库分支代码进行比对,看看是否有冲突。如果它显示「Able to merge」的话,Harry就可以点击下面的「Create pull request」绿色按钮,进行代码提交。

169c85eae744f90c63eac95498bad29aab680443

62b9bce5323a9c4a105c4de580faa49552428bcf

再之后,系统会要求你写一段注释,其实也可不写。但最好写一下,跟作者说明一下你改动了什么,为啥这么改。

通过以上6步,原作者Alvin就会收到一个pull request,如下图:

c6933e451b2bcdd15350a7986a6d9700ec68e766

然后,Alvin可以点进去,看看Harry具体提交了一些什么修改。如果他觉得这个修改确实够niubility的话,它就可以点击「merge pull request」,将Harry的提交集成到自己的项目里。

fc046b815111c8023c242806939c1962352972a3

至此,功德圆满,Harry顺利完成一次对项目githubTest的代码贡献。

分割线

但是,这个项目实在太出众了,很多高手看到了并贡献了众多代码。比如现在Alvin自己提交了一个文件:

78939f8922f4693868c9f2478c7c9a7e237e2103

现在原作者项目已经发生了改变,那Harry账号下的githubTest如何与原作者Alvin的项目保持同步呢?Harry需要做以下三步操作:

34483e4c6c865b54d4b0c82fcfde25f3cc00827c

1. fetch

现在代码不同步了,我们要先把Alvin仓库的代码fetch到自己电脑的仓库下。注意,这是在自己电脑上操作,不是在github上操作。

git fetch git@github.com:yychuyu/githubTest.git master:latest

上面这条命令,git fetch 之后 的那部分,是原作者Alvin项目git地址,通过点击原项目「clone or download」按钮可以看到。再之后master:latest这部分,master是原项目分支,latest是自己项目分支。如果latest分支不存在的话,将自动创建。其实也可以将代码fetch到自己的master分支,但也不建议这么做。

2. merge

代码fetch到latest分支之后,再切到master分支,再使用git merge命令将最新代码合并到master分支。

3. push

现在,Harry电脑上的代码与原项目代码保持同步了。我们再使用git push命令,就可以将最新代码推到Harry账号下githubTest项目里

以上的三个步骤具体操作过程如下图示。

2b239bca5337599b905b67cd8652c7cba37649a9

接下来,Harry就可以在此基础上,继续贡献自己的代码了。

原文发布时间为:2018-10-08

本文作者:良许

本文来自云栖社区合作伙伴“”,了解相关信息可以关注“

你可能感兴趣的文章
【ES6】数值的扩展
查看>>
Compare Version Numbers
查看>>
微信小程序多列选择器
查看>>
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>