如何在 GitHub 上大显身手?

如何在 GitHub 上大显身手?

如何在 GitHub 上大显身手?

作者 | 良许

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

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

比如说,现在GitHub上有个很牛逼的项目githubTest,它的作者是Alvin,项目地址如下:https://github.com/yychuyu/githubTest。

如何在 GitHub 上大显身手?

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

如何在 GitHub 上大显身手?

1. fork

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

如何在 GitHub 上大显身手?

2. clone

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

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

如何在 GitHub 上大显身手?

如何在 GitHub 上大显身手?

3. update a file & 4. commit

接下来,Harry就可以大显身手了,可以自由对这个项目进行修改。

但是,不建议在master分支直接修改,建议在master分支基础上切出一个dev分支,然后在dev分支上自由发挥。修改完之后,再将dev分支merge到master分支。

如何在 GitHub 上大显身手?

5. push

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

如何在 GitHub 上大显身手?

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

如何在 GitHub 上大显身手?

6. pull request

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

如何在 GitHub 上大显身手?

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

如何在 GitHub 上大显身手?

如何在 GitHub 上大显身手?

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

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

如何在 GitHub 上大显身手?

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

如何在 GitHub 上大显身手?

如何在 GitHub 上大显身手?

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

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

如何在 GitHub 上大显身手?

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

如何在 GitHub 上大显身手?

1. fetch

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

git fetch [email protected]: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项目里。

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

如何在 GitHub 上大显身手?

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

作者:良许,目前就职于一家世界500强外企,专注于Linux应用开发。本文首发于个人公众号「良许Linux」主要分享Linux方面干货,欢迎关注。


分享到:


相關文章: