当前位置: 首页 > news >正文

GitHub 上 fork 的代码,如何保持与原作者同步更新

githubfork别人的代码之后,如何保持和原作者同步的更新

一、命令行的方式

首先要先确定一下是否建立了主repo的远程源:

# git remote -v

如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源

1、配置上游项目地址。即将你 fork 的项目的地址给配置到自己的项目上。比如我 fork 了一个项目,原项目是 wabish/fork-demo.git,我的项目就是 cobish/fork-demo.git。使用以下命令来配置。

# git remote add upstream https://github.com/wabish/fork-demo.git

然后可以查看一下配置状况,很好,上游项目的地址已经被加进来了。

# git remote -v
origin  git@github.com:cobish/fork-demo.git (fetch)
origin  git@github.com:cobish/fork-demo.git (push)
upstream    https://github.com/wabish/fork-demo.git (fetch)
upstream    https://github.com/wabish/fork-demo.git (push)

2、获取上游项目更新。使用 fetch 命令更新,fetch 后会被存储在一个本地分支 upstream/master 上。

# git fetch upstream

3、合并到本地分支。切换到 master 分支,合并 upstream/master 分支。

# git merge upstream/master

4、提交推送。根据自己情况提交推送自己项目的代码。

# git push origin master

由于项目已经配置了上游项目的地址,所以如果 fork 的项目再次更新,重复步骤 2、3、4即可。

二、只用Github不用命令行的方法

玩过github的人一定会在你自己的账号上fork了一些github开源项目。这些开源项目往往更新比较活跃,你今天fork用到你自己的项目中去了,过几个星期这个fork的origin可能有一些bugfix了,你怎么办呢?当然直接到Origin repo中去clone是一个方法,但是github的public repo有可能过一段时间就被作者删除了,你是否希望在origin即使已经被删除的情况下,你的账号下依然有你钟情的repo?

解决上面的问题,最好的方法就是不定时地将origin的commit sync到你自己的fork repo中,一方面能够保持鲜活,另一方面有备无患。那么如何sync呢?又有几种方案,一种是你直接在本地clone的repo中,pull upstrame,做好merge,随后push到你自己的fork repo中。另外还有一种更加简便聪明的方法:只需在github网站上点几个鼠标,不用本地开发环境轻松搞定:

1.打开你的github fork repo;

2.点击Pull request;

3.点击new pull request.默认情况下,github会比较original/your fork,这时应该不会有任何输出,因为你并没有做过任何变更;

4.点击switching the base.这时github将反过来比较yourfork/original,这时你将看到original相对你fork时的所有commit;

5.点击create a pull request for this comparison,这时将会反过来向你的repo提交一个pull request;

6.这时你作为你自己fork的repo的owner,你就可以点击confirm the merge,大笔一挥,所有的改动都被你一网打尽了@!

enjoy it!

图解

1.进入你的GitHub发起Pull request

这里写图片描述

2.选择compare across forks

这里写图片描述

3.反向操作。base fork改为自己的,head fork改为原作者的

4.点击 create pull request

这里写图片描述

5 添加comment

这里写图片描述

6.点击create pull request

7.点击Merge pull request

这里写图片描述

  1. Confirm merge

这里写图片描述


http://www.mrgr.cn/news/21966.html

相关文章:

  • 一篇文章告诉你小程序为什么最近这么火?
  • 【C++】容器
  • 基于51单片机的倒计时定时器proteus仿真
  • 手机玩机常识-------诺基亚系列机型3/5/6/7/8详细的刷机教程步骤 手机参考救砖刷机教程
  • 用EA和SysML一步步建模(05)使命声明-解构需求01
  • C++实现俄罗斯方块(Windows控制台版)
  • 21. 合并两个有序链表【 力扣(LeetCode) 】
  • 项目实战系列三: 家居购项目 第四部分
  • LabVIEW程序员是怎样成长为大佬
  • 跨系统环境下LabVIEW程序稳定运行
  • 农场管理系统小程序的设计
  • 包机制,javadoc生成文档,用户交互scanner
  • 发现 Unstructured 的 “TensorrtExecutionProvider“ 比 “CUDAExecutionProvider“ 慢
  • flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志
  • 【2.1 深度学习中的感知机是什么】
  • AI模型:到底是追求全能还是要追求专精?这是一个问题
  • Exchange 服务器地址列表的配置方法与注意事项
  • 唯徳知识产权产权系统存在任意文件读取漏洞
  • FastGPT自定义插件的icon
  • 机器学习1——手把手教你用Python跑一个线性回归模型