前言

对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地址,并点击确定。

pull request给原作者

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

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

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

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

保证fork仓库的同步

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

添加原作者地址

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

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

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

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

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

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

更多

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

如果你在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和保持同步的更多相关文章

  1. git fork后提交pull request到原作者,别人的pull request我们要怎样merge融合

    首先要记住,pull request 不是随便提交的,这是建立在你对原作者的项目有fork,并对项目中的代码有修改,并提交到了你的GitHub上,才能进行下面的操作. 若不知怎样fork项目,请看我的 ...

  2. Github进行fork后如何与原仓库同步

    https://blog.csdn.net/myuantao3286286/article/details/50477139

  3. Git进行fork后如何与原仓库同步

    在进行Git协同开发的时候,往往会去fork一个仓库到自己的Git中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Git本身并没有自动进行同步的机制,这个需要手动去执行.name如何进行自 ...

  4. GitHub fork 合作开发 - 快速实现版

    目录 一 预备条件 二 fork项目 三 将项目clone到本地 四 push代码到自己的仓库 五 通过pull request提交代码 六 通过本地配置upstream来同步更新主repo的内容 七 ...

  5. Github中进行fork后,原仓库更新了如何与原仓库同步

    我们经常在Github中Fork别人优秀的项目(在自己的GitHub下面生成一个repository),如果原仓库作者或组织更新仓库,此时你Fork的项目并不会更新,如果我们想要更新操作,该如何操作? ...

  6. Github fork其他项目的分支与主干保持同步

    Fork一个Repo Fork是一个复制的操作,当你Fork一个项目之后,你就有了在原项目的基础之上进行修改和扩展的权限. 通常情况下,Fork操作用于参与别人的项目(成为项目中的一员),或者以别人的 ...

  7. github如何实现fork的项目与原项目同步

    refer to https://www.jianshu.com/p/fede3333205f 作者:hitchc 链接:https://www.jianshu.com/p/fede3333205f ...

  8. 同步 Github fork 分支

    /**************************************************************************** * 同步 Github fork 分支 * ...

  9. 如何把Github上好的项目pull到本地或者fork到本地(码云仓库同理)?

    首先Github账户的注册我就不想再啰嗦了,我想大家都会的. 其次怎么把自己的项目push到自己的Github仓库请参考我的另一篇博客: 如何把自己开发的项目上传到GitHub仓库或者码云仓库? 最后 ...

随机推荐

  1. 3.C#WinForm基础累加器

    功能:实现累加计算. 知识点: bool int.TryParse(string s,out int result)(+1重载) 将数字的字符串形式转换为它的等效的32位有效的有符号整数,一个指示操作 ...

  2. How do servlets work-Instantiation, sessions, shared variables and multithreading[reproduced]

    When the servletcontainer (like Apache Tomcat) starts up, it will deploy and load all webapplication ...

  3. jQuery-1.9.1源码分析系列完毕目录整理

    jQuery 1.9.1源码分析已经完毕.目录如下 jQuery-1.9.1源码分析系列(一)整体架构 jQuery-1.9.1源码分析系列(一)整体架构续 jQuery-1.9.1源码分析系列(二) ...

  4. 浅谈UML的概念和模型之UML九种图

    1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...

  5. 使用Setup Factory安装包制作工具制作安装包

    在我们开发完软件后,除了极个别案例我们把整个目录复制给客户用外,我们一般都需要做成安装包,方便整个软件的部署操作,以安装包的部署操作可能简单的是复制文件,也可能包括一些注册表.数据库等额外的操作,不过 ...

  6. 应用.Net+Consul维护RabbitMq的高可用性

    懒人学习的过程就是工作中老大让干啥让做啥就研究研究啥,国庆放假回来的周末老大通过钉钉给我布置了个任务, RabbitMQ高可用解决方案,我想说钉钉太坑了: 这是国庆过后9号周日晚上下班给的任务,我周一 ...

  7. Mysql增加、删除和修改列属性和约束,和一些有用的查询语句

    最近在整理关于MySql的东西,把一些需要记录的东西写下来,以便以后查询和浏览,以下是一些操作技巧.添加表字段alter table` 表名称` add transactor varchar(10) ...

  8. opts=opts | |{}

    var opts=opts || {}这个语句是一个赋值或者初始化语句 该语句在opts已经被初始化过后opts的值不变,即执行var opts=opts这一部分. 当opts未被初始化,即typeo ...

  9. 如何在webapp中做出原生的ios下拉菜单效果

    github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...

  10. css实现一行文字居中,多行文字左对齐

    问题及场景: 当内容能一行显示在盒子内时,文字居中对齐. 当内容过多换行后显示在盒子内时,文字左对齐. 其实这种视觉上的需求还是蛮常见的.比如用于弹出提示框,当提示内容比较少时,内容居中显示在弹出框, ...