GitHub 如何為開源專案貢獻程式碼
阿新 • • 發佈:2019-01-06
轉載地址:https://blog.zfanw.com/best-practice-contribute-on-github/
分叉
首先,Fork開源專案到自己得github賬戶下,比如JackTuoTuo/VerificationCodeView到rgdzh1/VerificationCodeView
克隆
從rgdzh1/VerificationCodeView
克隆程式碼到本地:
$ git clone https://github.com/rgdzh1/VerificationCodeView.git
分支
進入克隆下來的程式碼目錄,並建立一個分支,命名workFix:
$ cd VerificationCodeView
$ git checkout -b workFix
修改更新
在workFix分支下修改更新程式碼並commit:
$ git commit -m '更新XXX功能'
推送
將本地workFix分支中commit推送到github上temp_pr分支:
$ git push origin workFix:temp_pr
提交Pull request
分支推送到github後,rgdzh1/VerificationCodeView
專案下就會出現pull request相關按鈕,提交給上游的JackTuoTuo/VerificationCodeView
思考
一般我們使用衍合的目的,是想要得到一個能在遠端分支上乾淨應用的補丁,比如某個專案你不是維護者,但是想幫點忙,最好使用衍合處理。
先在自己的一個分支進行開發,當準備向主專案提交補丁的時候,根據最新的orgin/master進行一次衍合操作然後再提交,這樣維護者就不需要任何整合工作。
更新上游庫
-
首先配置上游庫:
$ git remote add upstream https://github.com/JackTuoTuo/VerificationCodeView.git
-
切換至本地庫的
master
分支,同步上游庫程式碼:$ git pull --rebase upstream master
-
接著再切換到本地workFix分支,合併程式碼
git rebase master
推送
-
修改完成後,可以再次推送程式碼到github。
$ git push origin workFix:temp_pr
-
但是會推送失敗,因為線上得temp_pr與線下得workFix分支所基於得base已經不一樣了。git會提示我們先pull,merge。步過可以選擇很暴力得方式,強制覆蓋。
$ git push --force origin workFix:temp_pr
清理分支
-
在 pull request 被合併後,刪除遠端的
temp_pr
分支及本地workFix
分支$ git push origin --delete temp_pr $ git branch -D workFix