Fork 一个示例仓库

Fork 是对一个仓库的克隆。克隆一个仓库允许你自由试验各种改变,而不影响原始的项目。

一般来说,forks 被用于去更改别人的项目(贡献代码给已经开源的项目)或者使用别人的项目作为你自己想法的初始开发点。

提出更改别人的项目

使用 forks 提出改变的一个很好的例子是漏洞修复。与其记录一个你发现的问题,不如:

  • Fork 这个仓库
  • 进行修复
  • 向这个项目的拥有者提交一个 pull requset

如果这个项目的拥有者认同你的成果,他们可能会将你的修复更新到原始的仓库中!

使用别人的项目作为你自己想法的初始开发点

开源的核心是共享代码,我们可以制作更好、更可靠的软件。

事实上,当你在 GitHub 上创建一个仓库时,你可以选择自动包含一个许可文件,这个文件决定你是否希望将你的项目分享给其他人。

Fork 一个仓库分为简单的两步。我们已经创建了一个仓库让你用于练习!

  1. 在 GitHub 上,定位到 octocat/Spoon-Knife 仓库。
  2. 在页面右上角,点击 Fork 按钮。

同步你的 Fork 仓库

你或许已经 fork 一个项目为了提交更改向 upstream 或原始仓库。这种情况下,很好的实现了将 upstream 仓库定期同步到你的 fork。要做到这一点,你需要在命令行中使用 Git。你可以使用你刚刚 fork 的 octocat/Spoon-Knife 仓库去练习设置 upstream 仓库。

第一步:安装 Git

你首先应该 安装 Git,如果你还没有。也不要忘记 通过 Git 验证 GitHub

第二步:为你 fork 的仓库创建一个本地克隆

现在,你已经成功 fork Spoon-Knife 仓库,但在你自己的计算机上并没有这个仓库的文件。让我们克隆你 Fork 的代码到你本地的计算机上。

1、在 GitHub 上,定位到你 fork 的 Spoon-Knife 仓库。

2、在你 fork 的仓库页面的右侧边栏,点击复制图标复制你 fork 的 URL。

3、打开 Terminal 命令(针对苹果系统用户)或者命令提示行(针对 Windows 和 Linux 用户)。

4、输入 git clone,然后粘贴在步骤 2 复制的 URL。它看起来就像如下所示,用你 GitHub 的用户名代替 YOUR-USERNAME:

$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife

5、按下 回车键 ,你的本地克隆就创建了。

$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
Cloning into `Spoon-Knife`...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (8/8), done.
remove: Total 10 (delta 1), reused 10 (delta 1)
Unpacking objects: 100% (10/10), done.

现在,你已经有了针对你 fork 的 Spoon-Knife 仓库的本地克隆代码!

第三步:通过配置 Git 来同步你 fork 的原始 Spoon-Knife 仓库

当你 fork 一个项目是为了提出更改这个原始的仓库,你可以配置 Git 将原始的或者 upstream 的变化更改到你本地。

1、在 GitHub 上,定位到 octocat/Spoon-Knife 仓库。

2、在这个仓库页面的右侧边栏,点击复制图标复制这个仓库的 URL。

3、打开 Terminal 命令(针对 Mac 用户)或提示命令行(Windows 和 Linux 用户)。

4、更改到你在步骤 2(创建一个本地)创建的你的 fork 的本地的目录。

  1. 回到根目录,只输入 cd
  2. 输入 ls,列出当前目录的文件和文件夹。
  3. 输入 cd 目录名”进入你输入的目录下。
  4. 输入 cd .. 回到上一目录。

5、输入 git remove -v,按下回车键,你将会看到你的 fork 当前配置的远程仓库:

$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

6、输入 git remote add upstream,然后粘贴你在步骤 2 复制的 URL 并按下回车键。它看起来如下所示:

$ git remote add upstream https://github.com/octocat/Spoon-Knife.git

7、验证你 fork 里新指明的这个 upstream 仓库,再次输入 git remote -v。你将会看到你 fork 的 URL 作为原始的地址,而原始的仓库的 URL 作为 upstream。

$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

现在,你可以保持你的 fork 与 upstream 的仓库的同步,利用几个 Git 命令。想知道更多信息,请参阅 Syncing a fork

豆电雨 -- 摘自极客学院。

Fork 一个仓库并同步的更多相关文章

  1. Fork一个仓库

    Fork 是对一个仓库的克隆.克隆一个仓库允许你自由试验各种改变,而不影响原始的项目. 一般来说,forks 被用于去更改别人的项目(贡献代码给已经开源的项目)或者使用别人的项目作为你自己想法的初始开 ...

  2. git怎么fork一个仓库并pull request

    一.使用git push <-----------就是这个玩意 1.设置用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每一个 Git 的提交都会 ...

  3. git常用命令以及如何与fork别人的仓库保持同步

    简单常用命令1.git status查看当前仓库是否有文件改动a:提示Your branch is up-to-date with 'origin/master'.nothing to commit, ...

  4. eclipse多个项目保存到gitee上一个仓库中

    自己练习创建到多个项目,想同步到gitee上一个仓库中. 1. 首先在gitee上创建项目springtest 2. 在eclipse默认项目存放到地方创建文件夹springtest,用来同步gite ...

  5. git如何更新fork的repository(Fork一个别人的repository,做了一些改动,再合并别人的更新)

    Fork一个别人的repository,做了一些改动,想提交pull request的时候,发现原先别人的repository已经又有了一些更新了,这个时候想使得自己fork出的repository也 ...

  6. EWM一个仓库号对应ERP多个PLANT的配置

    1. CIF多个DC到EWM系统,创建SCU并配置成仓 2. tx:/sapapo/loc3 对多个DC生成分配模型 3. IMG:分配仓库编号 去掉缺省的授权处理方 4. 维护SCU hierarc ...

  7. 【转】github如何删除一个仓库

    原文网址:http://jingyan.baidu.com/article/647f0115b031887f2048a85a.html?qq-pf-to=pcqq.group 今天打算删除一个仓库重新 ...

  8. GitHub如何删除一个仓库

    登陆后选择你需要删除的仓库 github如何删除一个仓库 在仓库的主界面的右边菜单栏选择settings github如何删除一个仓库 进入设置页面,一直往下拉,会发现一个红色的危险地区.. 找到de ...

  9. 在github上新建一个仓库并上传本地工程

    扫盲:在github上新建一个仓库并上传本地工程 http://1ke.co/course/194 我自己新建了个项目,一步一步流程如下. zhoudd@desay:~/桌面/mini_embed_d ...

随机推荐

  1. noip 2013 华容道

    /*双向bfs (得分和单项的一样多....)70*/ #include<iostream> #include<cstdio> #include<cstring> ...

  2. 关于c#流

     C#流的简单认识 前言 本篇文章简单总结了在C#编程中经常会用到的一些流.比如说FileStream.MemoryStream. BufferedStream. NetWorkStream. Str ...

  3. XlFileFormat

    -----转载:http://hi.baidu.com/liu_haitao/item/900ddb38979188c22f8ec26e 18 XlFileFormat.xlAddIn Microso ...

  4. (转)PHP函数set_magic_quotes_runtime()的作用

    新手经常遇到的问题是特殊字符提交的时候提示数据库错误,今天给大家介绍一个set_magic_quotes_runtime函数,来帮助我们过滤里面的内容 php函数 set_magic_quotes_r ...

  5. 【USACO 1.2.1】挤牛奶

    [问题描述] 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻.第二个农民在700时刻开始,在 1200时刻结束.第 ...

  6. When Colon Scripting is comming (脚本最佳体验)

    当冒号脚本来临-- 脚本最佳体验 冒号指派 说明; 冒号替代等号指派赋值,当命名声明指派时指定.相当于声明当前作用域的一个名字指派. 当对指定对象的属性赋值时候,依旧请使用等号.即不废弃等号赋值功用, ...

  7. java web 学习(1)

    java web 应用的核心技术包括以下几个方面: jsp:进行输入和输出的基本手段 javabean:完成功能的处理 servlet:对应用的流程进行控制 jdbc:是与数据库进行交互不可缺少的技术 ...

  8. Ajax的原理和运行机制

    关于ajax,是最近炒得非常火的一种技术,并且时下它也是非常流行.当然,它并不是什么新技术,而是在各种已有的技术和支持机制下的一个统一.在我的项目中,偶尔也会用到ajax,用来给用户一些无刷新的体验. ...

  9. WebAPI接口测试之matthewcv.WebApiTestClient

    WebAPI接口测试之matthewcv.WebApiTestClient matthewcv.WebApiTestClient 1.安装matthewcv.WebApiTestClient包 打开v ...

  10. javascript 读取内联之外的样式(style、currentStyle、getComputedStyle区别介绍) (转载)

    样式表有三种方式: 内嵌样式(inline Style) :是写在Tag里面的,内嵌样式只对所有的Tag有效.   (也称作“内联样式”) 内部样式(internal Style Sheet):是写在 ...