github使用fork合作开发

因为公司使用github做仓库,以为权限的问题。提交代码的时候,只能通过我的github申请推送到公司的gihub,然后审核合并

1.fork代码

即分叉的意思,代码拷贝到了自己的github。找到公司的项目,然后点击fork

github使用fork合作开发

然后回到自己的github,就可以看到了。

2.接下来就可以克隆到本地,然后敲代码,再推送到自己的github,巴拉巴拉这里不说。

3.通过pull request提交代码,即通过自己的github项目向公司的github推送代码

  • 把页面切换到 “Pull requests”,然后 New pull request

github使用fork合作开发

  • 从 哪里(源)merge 到哪里(目的),这个根据具体情况选择,本例中是要把之前在lcxv/devtoolstest/中的Test.java merge 到 southday/devtoolstest/中,如下:

github使用fork合作开发

  • 写上 Title 和 Write,然后 Create pull reques

github使用fork合作开发

  • 然后对方(主repo)就会有关于你的 pull request,如下:

github使用fork合作开发

  • 对方觉得你写的内容不错,就会同意你的请求,把代码合并到主repo中

 github使用fork合作开发

4.更新上游仓库的代码到自己的gitHub

  •  浏览器访问自己的reposi'tory,然后点击点击 New pull request,如下:

github使用fork合作开发

  • 和第3步相反,我们现在是要将 southday/devtoolstest/中的内容 推给 lcxv/devtoolstest/,所以需要修改推送方向,如图:

github使用fork合作开发

  • head repository为:southday/devtoolstest 后,页面会自动刷新,然后提示你:There isn’t anything to compare. 这是因为你没还没有修改目的仓库,源->源,肯定没东西可更新的,这时,点击稍微右上角的“compare across forks”,再将base repository改为:lcxv/devtoolstes

github使用fork合作开发

github使用fork合作开发

  • 接下来的操作和第3步中的类似,创建 pull request 后,可以 Merge pull request

github使用fork合作开发

  • 这样,你远程仓库中的内容就得到了同步,接下来用自己的远程仓库去同步本地仓库的内容,在本地仓库下执行命令:
  • >git fectch origin
  • >git pull origin master

github使用fork合作开发

github使用fork合作开发

5 通过本地配置upstream来同步更新主repo的内容

  • 主repo中添加了一个文件“southday-add.md”,现在我们要在本地中同步该内容
  • 先获取主repo项目的git地址,如本例中,主repo项目git地址为:https://github.com/southday/devtoolstest.git
  • 命令行进入到本地仓库目录,然后执行下面的命令进行remote配置:
  • >git remote add upstream https://github.com/southday/devtoolstest.git
  • 然后执行命令:>git remote -v 检查是否配置成功,下面出现了 upstream 以及对应的主项目git地址,说明配置成功

github使用fork合作开发

  • 执行命令:>git pull upstream master 来获取主repo中添加的“southday-add.md”文件

github使用fork合作开发

  • 如果主repo不是添加文件,而是修改了原文件,比如修改了:"README.md" 文件
  • 那么执行命令:>git fetch upstream 来更新修改内容

github使用fork合作开发

  • 执行到这里,主repo的改动已经同步到了你的仓库中了(本地 & 远程),你可以刷新浏览器看看 lcxv/devtoolstest/中的内容有没有变