github入门训练营[3]-fork a repo

一个fork是一个仓库的副本, fork一个仓库后你可以自由对他进行实验、改动,而不会影响到最原始的仓库.
大部分情况下,fork是用作向其他人的项目提交建议,或者是用别人的项目代码作为起点来开发.

##向别人的项目提出建议
一个很好的提建议的例子就是给别人的项目修复bug.

相比去给这个项目提一个bug的issue而言,你更好的做法是:

  • Fork这个仓库
  • 修复这个bug
  • 提交一个pull request给该项目的所有者

如果项目所有者认同你的工作,他们会拉取你的修改到原始仓库当中哦.

用别人的项目作为起点进行自己的开发

开源的核心思想就是通过开源代码,我们可以制作出更好、更健壮的软件.

当你基于fork别人的项目来创建一个你自己的公共仓库时,请确保在你项目中包含一个license文件,它写明了你希望你的项目如何与别人分享.

关于开源的更多信息,特别是如何创建和开发一个开源项目,Github已经创建了开源指南,通过推荐一些你创建和维护开源项目的最佳实践,帮助您建立一个健康的开源社区。

后续我有翻译中文版本,请看我的在线文档网站–xxx

Fork一个例子仓库试试

Forking一个仓库只需简单的2步,Github已经给创建了一个练习仓库。
在Github上,导航到octocat/Spoon-Knife这个仓库,然后点击页面的右上角的Fork按钮就行了。
现在,你已经拥有了octocat/Spoon-Knife这个原始仓库的fork副本。

保持你的fork副本同步

你可能fork了一个项目是为了给上游或原始项目提交更改。在这种情况下,最好的办法是经常从你的上游仓库同步一下。

要想同步,你需要使用Git命令行工具,我们来用这个octocat/Spoon-Knife仓库练习一下。

步骤1:安装git

如果你电脑没有安装git,请去安装git: Setup Git
不要忘记在Git中设置Github的认证
Don’t forget to set up authentication to GitHub from Git as well.

步骤2: 把你fork的项目创建一个本地的clone

现在,你已经fork了一个Spoon-Knife仓库,但是你电脑上本地还没有这个仓库。让我们给这个fork在你电脑上创建一个克隆。

  1. 在Github上,导航到你fork过来的那个仓库页面(注:是你自己账户页面下的这个仓库)
  2. 点击clone or download按钮
  3. 点击复制按钮,把连接复制下来
  4. 打开你电脑的Shell
  5. 然后输入git clone的命令

    1
    git clone https://github.com/YOUR-USERNAME/Spoon-Knife
  6. 回车执行,你的本地克隆版本就会拉取并创建了。

现在,你已经有了一个你fork的那个Spoon-Knife仓库的本地副本。
Now, you have a local copy of your fork of the Spoon-Knife repository!

步骤3:配置你的Git,从而让你的fork项目保持与原始仓库的同步

当你fork了一个项目而又希望提交变更给原始仓库,你可以配置你的Git从原始仓库、或者上游仓库upstream拉取代码到你本地的fork中。
(备注:这里的original原始仓库应该是指的你在github上fork过来的那个在你自己账户下的仓库;而upstream仓库是指的你的fork拉取自的那个仓库,即你的上游那个仓库)

  1. 在Github上,导航到Spoon-Knife

  2. 点击clone or download按钮

  3. 在clone or download的HTTPS选项卡上,复制clone的链接

  4. 打开你电脑的Shell

  5. 进入你在上文中clone下来的你自己的那个fork

  6. 输入git remote -v 你会看到当前你这个fork已经配置的远程仓库(其实就是你clone的来源地址咯)

1
2
3
git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
  1. 输入git remote add upstream,然后跟上你在第二步中拷贝的Spoon-Lnife仓库的HTTPS地址
1
git remote add upstream https://github.com/octocat/Spoon-Knife.git
  1. 为了验证你新加的这个upstream上游远程仓库地址,你可以输入 git remote -v,你应该能看到一个叫做origin的它是你fork副本的URL,还有一个URL叫做upstream,它是你这个fork的原始仓库的URL。

现在,你可以通过git命令操作来保持你的fork与upstream仓库同步了,具体看教程Syncing a fork

步骤4:

你能对一个fork所做的更新操作有:

  1. 创建分支: 分支可以让你创建新的特性或者测试你的想法,而不会影响主项目
  2. 打开一个pull request. 如果你希望给最原始的仓库做贡献,你可以发送给原作者一个pull request, 让他拉取pull你的fork到他的仓库中

去寻找一个仓库来fork

每个公共仓库都可以被fork,所以找一个你感兴趣的去fork吧。
Explore Github是一个好地方,能发现各种符合你兴趣的项目,常常可以看到很新很酷的东西。

本地git的基本操作

要想深入学习使用git进行克隆、拉取、提交等操作,你需要再去学习专门的教程, 这里不再赘述。这里简单提一点,就是如果你要提交代码,除了需要拥有操作中央仓库的权限之外, 还要在本机配置一个你的标示: 邮箱和昵称。可以通过如下命令来全局配置:

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

参考