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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章