大白話講解如何給github上項目貢獻代碼

本文獻給對git很迷茫的新手,注意是新手,但至少會點基本操作,有點基本概念的新手,我不會從怎麼用github和git是什麼開始講的。如果作爲新手你看書又看不進去,原理又太複雜,有沒有直接了當告訴我們怎麼給項目貢獻代碼,並和項目同步代碼的大體流程。於是我快速寫了這麼個東西。一來整理下自己混亂的思路,二來想號召大家一起用git開發點東西,可是好幾個同鞋只會寂寞的給自己push。

我先說下 我之前對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》,感謝梁老師,感謝我自己,感謝所有的熊孩子們。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章