github概念和实战
- fork: 通过fork操作,你将拥有了别人创建的repo的ownership,但是url却变成了/youraccount/repo,这时你将可以做git push操作
- clone: 该命令是直接将repo clone到本地,以方便更改及提交
- pull request: 对于公开的项目repo,你直接clone的话你是不具有push权限的,原因是你既不是owner,也不是collaborator。一个可行的方案就是你首先fork到你自己的账号下,clone你自己账号下的原始repo,本地修改,git push到你的原始repo,这时如果你觉得自己的修改对原始项目repo有用,那么也可以通过pull request操作向原始项目repo owner来申请权限。一旦pull request后,原始项目owner将会看到这个请求,如果他accept了,你的更改就被merge到原始repo中去了。
pull request可以被理解为:自己fork过去的repo实际上是原始项目的一个branch,一旦pull request被操作,那么就是把你的branch和原始repo的master branch进行合并操作
- 如何更新自己的fork以便包含别的collaborator的贡献?1. git remote add upstream <path_to_upstream_original_repo>;(add remote for upstream)2.git fetch upstream(fetch changes)3.git merge upstream/master master(merge them into local master)4.git push origin master(push your change to your remote fork)5.在github中执行pull request操作,以便把你的改动merge到upstream repo中去
- 上述senario是以public repo来介绍的workflow,这种模式keep updated是一个困难和低效的事情,因此对于coorperate项目一般使用single repository workflow的模式。即:每个teammember都直接clone upstream repo,做自己的push/pull操作随时保持update。但是问题又来了,就是每个人都直接向upstream master来做push,这样工作流不隔离导致互相影响掣肘,为了解决这个问题,需要提出一种feature branch的策略:每个teammember在自己的branch上工作,做完之后提交pull request,等待teammember review后merge
积小流以汇江海,细微做起