前言

对github上的某个项目贡献自己的修改,但自己可能并没有那个仓库的权限,那要如何操作呢?git的机制和svn还是有些区别的,本文做些记录。

思路1

clone项目到本地,有修改之后,直接提交到原作者仓库

思路2

forck项目到自己的仓库,然后进行修改,并把修改的内容推送到原作者仓库。

尝试过第一种思路会报权限不足,本篇记录第二种思路

本文示例

原作者仓库地址:https://github.com/mr-kelly/KSFramework

自己Fork后的地址:https://github.com/zhaoqingqing/KSFramework/


操作环境

拉取方式:使用https而非ssh

windows 7 x64

TortoiseGit 2.2.0.0

git version 2.10.0.windows


Fork并Pull给原作者

当自己修复原作者的一些bug之后,希望把这个修改push给原作者。

git重新定位到自己仓库

当使用git clone 远端的项目到本地之后,要如何把这个地址指向自己的仓库呢?又为什么要指向自己仓库呢?

1、指向自己的仓库,自己拥有提交和push权限

2、可以不用重新git clone一份资源下来啦。


通过修改远端,类似于SVN的重新定位,就是修改远端的地址。

我把远端的地址换成是我github地址,并点击确定。

github fork后的pull和保持同步

pull request给原作者

1、当把远端地址改成自己的仓库地址之后,就有权限提交了,可以和平时一样进行commit和push

2、推送到自己的远端之后,如果你想把这个修改 pull 给原作者,在网页版可以看到一个 New pull request 的按钮,点击它

github fork后的pull和保持同步


3、点击之后,会出现你要推送的修改,查看无误之后,可以点击 “ Create pull request

github fork后的pull和保持同步


4、接下来在原作者的仓库的 pull request,就会出现你pull的修改,等待原作者通过之后,你的代码就被合并了。

github fork后的pull和保持同步

保证fork仓库的同步

上述方法是fork原作者的仓库,而当原作者的代码有更新,我们要如何把作者同步到自己的仓库呢?

添加原作者地址

github fork后的pull和保持同步

此步骤用于更新原作者的修改,保证库中的部分代码和原作者一样。


同步原作者的修改到自己仓库

1、使用git pull(拉取)原作者的新修改之后,打开TortoiseGit的同步窗口

2、选择 远端分支,在“将推送的提交”选择要推送的分支

3、点击推送,会自动添加此次的注释,一般都是“Merge xxx”

4、做完以上三步,你就把原作者的修改内容同步到自己的仓库了

github fork后的pull和保持同步


更多

直接提交到原作者仓库遇到的问题

如果你在clone之后直接提交到原作者仓库时,报权限不足,那么建议使用fork 后 push的方式,即本文所使用的方式

git.exe push -v --progress "origin" master:master

remote: Permission to mr-kelly/KSFramework.git denied to zhaoqingqing.
fatal: unable to access 'https://mr-kelly@github.com/mr-kelly/KSFramework.git/': The requested URL returned error: 403
Pushing to https://mr-kelly@github.com/mr-kelly/KSFramework.git


参考资料:http://blog.csdn.net/huutu/article/details/51831647


关闭Pull Request

如果 pull的代码有问题,或者想修改,可以对pull request进行关闭

1、点击Pull requests,找到自己要close的那条记录

2、点击记录进入详细页面,拉到底部,点击  Close pull request

github fork后的pull和保持同步

相关文章: