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 項目
第二步
之後 在命令行裏面 克隆 代碼
git clone https://github.com/changyubiao/mymodel.git
在本地一頓改動, 和正常提交代碼 流程一樣.
git add xxx
git commit -m "xxxxx"
git push
第三步 可以在 自己的 倉庫的裏面 發起一個 pull request 給原作者
創建後 就進入 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