github 向開源軟件貢獻自己的代碼

github 向開源軟件貢獻自己的代碼

貢獻自己的代碼

1 如何 在github的某些 開源項目貢獻自己的代碼?
如何給開源項目貢獻代碼
分兩種情況:

1.代碼倉庫管理者給你添加該倉庫的寫入權限,這樣的話可以直接push

2.如果不能直接push(大多數情況),採用經典的fork & pull request來提交代碼,下面講述這種情況
fork & pull request
例如有個倉庫 https://github.com/square-knight/mymodel.git

其採用了經典的分支開發模型,穩定後的代碼提交到master分支,其餘特性則在dev分支上進行開發,待成熟後合併回master分支。

首先, 到作者github 的 倉庫主頁, 先fork一個作者的倉庫,fork可以理解copy 一份代碼到自己的git 倉庫下面 , fork 成功後 會看到自己的代碼倉庫裏面 就有了別人的repo.

第一步 fork 項目

fork-img1

fork-img2

第二步
之後 在命令行裏面 克隆 代碼

git clone https://github.com/changyubiao/mymodel.git

在本地一頓改動, 和正常提交代碼 流程一樣.

git  add xxx
git commit -m "xxxxx"
git push 

第三步 可以在 自己的 倉庫的裏面 發起一個 pull request 給原作者

pr-img1

創建後 就進入 pull request 的頁面 , 然後點擊 merge pull request 按鈕 並確認 就好了.

剩下的事情就是等待項目的開發者審批了 , 如果開發者 對你的代碼有 爭議,或者其他的建議,你可以繼續修改, 讓代碼更加符合開發者的意思.

同步fork 倉庫後的代碼

有的時候 隨着 你fork 的代碼, 原倉庫的代碼 有一些改動,和提交,這個時候 你可能需要把 最新的代碼同步過來,然後在 進行pullrequest .

1 首先 需要 先配置一個上游的upstream

$ git  remote  -v
origin  https://github.com/changyubiao/mymodel.git (fetch)
origin  https://github.com/changyubiao/mymodel.git (push)

這是你自己的倉庫

2 然後 要添加原作者的倉庫地址 作爲upstream

$ git remote add upstream   https://github.com/square-knight/mymodel.git

添加完成後 ,可以看出 upstream 已經添加好了.

$ git remote -v
origin  https://github.com/changyubiao/mymodel.git (fetch)
origin  https://github.com/changyubiao/mymodel.git (push)
upstream        https://github.com/square-knight/mymodel.git (fetch)
upstream        https://github.com/square-knight/mymodel.git (push)

3 下面 就可以 更新代碼了,
首先 fetch 一下 git fetch upstream , 這個命令 會把upstream 倉庫的 分支 copy 到本地 並且對應的名稱是 upstream/分支名

master 分支 對應就是 upstream/master 分支

$ git fetch upstream
remote: Enumerating objects: 200, done.
remote: Counting objects: 100% (188/188), done.
remote: Compressing objects: 100% (109/109), done.
remote: Total 162 (delta 96), reused 101 (delta 51), pack-reused 0
Receiving objects: 100% (162/162), 3.15 MiB | 1.38 MiB/s, done.
Resolving deltas: 100% (96/96), completed with 11 local objects.
From https://github.com/square-knight/mymodel
 * [new branch]      dev        -> upstream/dev
 * [new branch]      master     -> upstream/master

4 切換到自己 的master 分支

git checkout  master  

5 把 upstream/master 合併到自己的master 分支

$ git merge upstream/master
Updating 90180ca..503f020
Fast-forward
 .gitignore                                      |   58 +-
 Pipfile                                         |   38 +-
 README.md                                       |   17 +-
 app/CNN.py                                      |  224 +
 app/main.py                                     |  281 +-
 app/model.py                                    |  210 +-
 app/web/upload_service.py                       |   72 +-
 ...
 

 resource/model/finger-model.meta                |  Bin 53024 -> 0 bytes

 19 files changed, 6525 insertions(+), 333 deletions(-)
 create mode 100644 app/CNN.py
 create mode 100644 resource/app/ohmyfinger.apk
 create mode 100644 resource/app/ohmyfinger_dep.apk
 create mode 100644 resource/costs.txt
 delete mode 100644 resource/model/checkpoint
 delete mode 100644 resource/model/finger-model.data-00000-of-00001
 delete mode 100644 resource/model/finger-model.index
 delete mode 100644 resource/model/finger-model.meta
 create mode 100644 resource/train.txt
 create mode 100644 util/Model.py
 create mode 100644 util/img_loader.py

6 這個時候 代碼就合併到自己的分支了, 只需要推送到自己的分支就可以了

查看 git status

$ git status
On branch master
Your branch is ahead of 'origin/master' by 28 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean


$ git push 

好了 這樣就可以原作者的分支 同步了. 之後 就可以愉快的開發,提交自己的代碼,之後 創建一個 pull request 給原作者了.

參考官方文檔
1. 配置一個上游的upstream

2. 同步更新fork的倉庫

分享快樂,留住感動. '2019-12-29 15:30:18' --frank
發佈了112 篇原創文章 · 獲贊 65 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章