2021-05-12 14:32:11
如何在GitHub上傳專案貢獻程式碼
本文獻給對Git很迷茫的新手,注意是新手,但至少會點基本操作,有點基本概念的新手,我不會從怎麼用GitHub和Git是什麼開始講的。如果作為新手你看書又看不進去,原理又太複雜,有沒有直接了當告訴我們怎麼給專案貢獻程式碼,並和專案同步程式碼的大體流程。於是我快速寫了這麼個東西。一來整理下自己混亂的思路,二來想號召大家一起用Git開發點東西,可是好幾個同鞋只會寂寞的給自己push。
以下提到的《Pro Git》中文版 PDF 下載見 http://www.linuxidc.com/Linux/2013-05/85066.htm
我先說下 我之前對GitHub操作的一些迷茫歷程,然後之後是怎麼解惑的。
1. 最最開始,我以為git clone [專案地址],也就是把程式碼clone下來 然後修改,然後push到專案裡就可以了。
後來發現,這種情況只適合該專案屬於你自己的情況,如果你git clone別人的專案程式碼,你想push都push不上去,因為 git push 不是需要你輸入GitHub帳號密碼麼。
2. 然後 我就知道了 GitHub上 不是有個fork麼, 好,那麼給別人的專案提交程式碼的方式就有了,先fork下別人的程式碼,於是你的GitHub上就出現了同名的專案,這個專案就屬於你自己了,你把這個自己的專案git clone到本地,修修改改,然後push到你自己的專案裡,那麼你如何把你對自己專案的改動,給發到之前fork的那個原專案呢,看見了沒,在GitHub上你的計畫頁面有個按鈕,叫Pull request,對 你點它就會把你的修改發到對方的專案裡,人還會收到郵件呢,由原專案主人決定是否接受你的修改。
但是,這樣問題就出來了,在你fork他的專案之後,如果他又更新了程式碼,你自己fork的專案怎麼做到和原專案同步呢?
我就想啊,是不是 我還得重新git clone原專案的程式碼,然後手動合併到我fork的專案裡呢。。。
梁老師說,你丫這太蛋疼了,肯定不是這麼麻煩,我細想,也是啊,這不2麼。。。
3,然後,從《Pro git》上看到一個知識點,我擦,GitHub居然可以給專案新增合作者,也就是說,假如你,對,說你呢,戴眼鏡那個,你想參與我的專案,你跟我說一聲,我就把你新增到我的專案裡作為合作者,這個選項在專案的設定裡面有,只要我新增你了,你就可以git clone我的程式碼然後修修改改,然後直接push上來就行了,就不用fork那麼麻煩了,如果你要更新伺服器程式碼,只要git pull就行了,看 合作者這東西多方便,就像我們在公司用svn似的。
4.然後我就想啊,有了合作者還需要你丫fork這個功能幹啥?仔細一想,你寫個好專案,不能隨便加合作者啊,加了個熊孩子把你程式碼改廢了可咋整,這年頭熊孩子很多,我自己不就是一個麼。所以fork肯定還是需要,fork就是專門預防熊孩子的,這就是真相!那麼前面說道到fork之後如何與原專案同步的問題還在啊,沒有得到解決。
5.於是《Pro git》再次給了我一個解答,具體流程是你啊想給我的專案做貢獻,你先git clone我的程式碼到本地,然後修修改改,然後你不是不能push到我的專案裡麼,你可以先在GitHub頁面上fork我的專案,有了你自己的專案地址(url)之後呢,你在本地操作git remote add [sort name] [your url],意思就是新增第二個遠端倉庫地址,這個倉庫的“暱稱”就是你剛指定的[sort name],然後,你之後push檔案呢 就通過指定這個[sort name]來push到這個你自己的倉庫裡。等你覺得想要把你改的發給原專案同步,就在你的專案上點Pull request按鈕.說下另一種情況,如果是,原專案發生了改動,你要想同步到本地,就直接從git fetch origin 從原專案的地址同步程式碼,然後再merge就好了。當然,如《Pro git》上所寫,你可以通過新建分支的方式往自己的專案上push,這樣同步的時候直接fetch就行了。這塊如果我沒寫明白或者你想知道怎麼新建分支的方式push到自己的專案裡,可以直接參考《Pro git》的“公開的小型專案”一節,那我的貢獻就是指點你如何從這本書裡快速的找到你想要的。= =。
好了,時間有限,我寫的快不一定講明白,歡迎跟我討論。
感謝linus,感謝git,感謝GitHub,感謝kindle,感謝《Pro git》,感謝梁老師,感謝我自己,感謝所有的熊孩子們。
GitHub 教學系列文章:
通過GitHub建立個人技術部落格圖文詳解 http://www.linuxidc.com/Linux/2015-02/114121.htm
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 伺服器搭建與用戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
相關文章