如何在 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方面乾貨,歡迎關注。


分享到:


相關文章: