碼農朋友們都知道,gitHub是一個面向開源及私有軟體專案的托管平臺,上面托管了眾多的優秀的專案,比如linux內核原始碼、git原始碼、機器學習框架tensorflow等等,當然,除了這些頂尖專案外,還有海量的高手開發的優秀專案,所有的這些專案,我們都可以為它貢獻代碼,
那么,要如何為這些專案貢獻代碼呢?我們下面以實體來講解,
比如說,現在gitHub上有個很牛逼的專案githubTest,它的作者是Alvin,專案地址如下:
https://github.com/yychuyu/githubTest

現在Harry看到了這個專案,想要對它進行貢獻代碼,想要達到這個目的,Harry要完成下圖的這些步驟:

1. fork
Harry在找到這個專案之后,點擊右上角的「fork」按鈕,稍等片刻后,就會在Harry的賬號下克隆了一個一樣的專案githubTest,包括檔案,提交歷史,issues,和其余一些東西,

2. clone
通過fork之后,Harry的賬號下也有了githubTest這個專案,但還不能對它進行編譯、修改(其實是可以修改,但是不建議),
這時,可以通過git clone命令,將這個專案clone到自己的電腦里,


3. update a file & 4. commit
接下來,Harry就可以大顯身手了,可以自由對這個專案進行修改,但是,不建議在master分支直接修改,建議在master分支基礎上切出一個dev分支,然后在dev分支上自由發揮,修改完之后,再將dev分支merge到master分支,

5. push
在自己的電腦上修改好代碼之后,再使用git push命令將改動同步到自己的gitHub專案倉庫里,

通過這個操作后,就可以在代碼倉庫里看到自己的提交了,

6. pull request
接下來,就是向原作者Alvin提交你的代碼了,首先點擊檔案串列上的「New pull request」,

之后,gitHub會自動對源倉庫分支及自己倉庫分支代碼進行比對,看看是否有沖突,如果它顯示「Able to merge」的話,Harry就可以點擊下面的「Create pull request」綠色按鈕,進行代碼提交,


再之后,系統會要求你寫一段注釋,其實也可不寫,但最好寫一下,跟作者說明一下你改動了什么,為啥這么改,
通過以上6步,原作者Alvin就會收到一個pull request,如下圖:

然后,Alvin可以點進去,看看Harry具體提交了一些什么修改,如果他覺得這個修改確實夠niubility的話,它就可以點擊「merge pull request」,將Harry的提交集成到自己的專案里,


至此,功德圓滿,Harry順利完成一次對專案githubTest的代碼貢獻,
但是,這個專案實在太出眾了,很多高手看到了并貢獻了眾多代碼,比如現在Alvin自己提交了一個檔案:

現在原作者專案已經發生了改變,那Harry賬號下的githubTest如何與原作者Alvin的專案保持同步呢?Harry需要做以下三步操作:

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專案里
以上的三個步驟具體操作程序如下圖示,

接下來,Harry就可以在此基礎上,繼續貢獻自己的代碼了,
更多精彩內容,請關注公眾號良許Linux,公眾內回復1024可免費獲得5T技術資料,包括:Linux,C/C++,Python,樹莓派,嵌入式,Java,人工智能,等等,公眾號內回復進群,邀請您進高手如云技術交流群,
公眾號:良許Linux
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/84110.html
標籤:Linux
上一篇:ubuntu忘記密碼修改方法
