天天看點

如何在GitHub上大顯身手?

本文轉載自公衆号「良許Linux」。良許目前就職于一家世界500強外企,專注于Linux應用開發,歡迎學習Linux,C/C++,Python的朋友關注!

碼農朋友們都知道,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上大顯身手?

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上大顯身手?
之後,gitHub會自動對源倉庫分支及自己倉庫分支代碼進行比對,看看是否有沖突。如果它顯示「Able to merge」的話,Harry就可以點選下面的「Create pull request」綠色按鈕,進行代碼送出。
如何在GitHub上大顯身手?
如何在GitHub上大顯身手?

再之後,系統會要求你寫一段注釋,其實也可不寫。但最好寫一下,跟作者說明一下你改動了什麼,為啥這麼改。

通過以上6步,原作者Alvin就會收到一個pull request,如下圖:

如何在GitHub上大顯身手?
然後,Alvin可以點進去,看看Harry具體送出了一些什麼修改。如果他覺得這個修改确實夠niubility的話,它就可以點選「merge pull request」,将Harry的送出內建到自己的項目裡。
如何在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就可以在此基礎上,繼續貢獻自己的代碼了。

原文釋出時間為:2018-10-08

本文作者:良許

本文來自雲栖社群合作夥伴“

輪子工廠

”,了解相關資訊可以關注“

繼續閱讀