1. 程式人生 > >GitHub 如何為開源專案貢獻程式碼

GitHub 如何為開源專案貢獻程式碼

轉載地址: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

,請求Merge。

思考

​ 一般我們使用衍合的目的,是想要得到一個能在遠端分支上乾淨應用的補丁,比如某個專案你不是維護者,但是想幫點忙,最好使用衍合處理。
​ 先在自己的一個分支進行開發,當準備向主專案提交補丁的時候,根據最新的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