由于git的权限控制功能比较弱,如果想给某个项目提供代码除了直接获得项目的push权限外,github另外提供了pull request的方式来进行协作。这种方式请求仓库拥有者拉自己的代码,而不需要仓库的权限。
首先,进入上游仓库,点击下图中红框内的fork,通过fork的方式在自己的仓库里建立一个项目。
回到仓库就能看到自己fork的项目,并可以看到项目是从哪个仓库fork来的。这个仓库的使用方法和我们自己的仓库一样。
如果在我们提交前,上游仓库更新了,我们可以在仓库中看到下图中的提示:“This branch is 5 commits behind nusubmarine:master.”。表示我们fork的那个分支和我们仓库的当前分支比向前了5个提交。
我们想要和上游仓库的代码保持同步更新的话,可以从上游仓库那里把那个拉过来。点击下面红框中的pull request。
进入到下面的页面。如果我们没有要提交的内容,会直接提示:“Try switching the base for your comparison.”。如果因为自己仓库里有改动,没有这个提示,自己交换两个比较分支的位置。
交换后,就会变成我们拉上游仓库的分支,点击红框中的按钮创建一个请求。
填写提交的注释,自己在查看历史的时候会比较好理解。
确认后显示如下内容,表示可以和上游仓库同步。之后点下方的merge pull request进行合并,并确认。
最后,我们自己仓库里的代码完成,就需要向上游仓库发一个pull request了。过程和上面相似,只是不用在交换分支,,最后一步和上图有所区别,不是合并而是提交,之后可以在提交历史里看到自己的提交,等上游仓库拥有者同意就可以了。