原文:How to Fork a GitHub Repository – A Complete Workflow,作者:TAPAS ADHIKARY

GitHub 是一个很棒的应用程序,可以帮助你管理你的 Git 仓库。你也可以用它来为开源生态系统做贡献,与其他贡献者合作。

GitHub 上的公共仓库经常会得到很多贡献者的关注,这有助于提高项目的水平。

那么如何才能轻松地在公共仓库中工作呢?仓库 forking 工具可以让贡献者在本地复制源代码仓库,并做任何他们想做的修改。

但如果你作为一个初学者要使用这个工具,你需要了解仓库复刻的工作流程,这样你就可以无缝地与其他公共仓库合作。

在这篇文章中,我们将通过实际的例子和故事来学习如何复刻一个仓库。如果你喜欢通过视频学习,也可以看这个 YouTube 视频:

什么是 GitHub 仓库复刻?

假设你喜欢在一个特定的框架或库上工作,比如 React.js。有一天,你想出了一个办法,可以自己增强 React 的功能。

React 的源代码在 GitHub 上以公共仓库的形式提供,所以你可以通过复刻来制作它的本地拷贝。

一旦你得到了代码的本地拷贝,你可以进行相关的修改,并要求 React 社区审查你的修改。

在审查了你的代码修改后,React 社区可能会批准它们,或者要求你做更多的修改。他们很有可能在批准(approval)后接受你的代码修改。

所以,让我们通过两个开发者 Tom 和 Hari 的故事来了解整个复刻工作流程。

完整的复刻工作流

Tom 和 Hari 是两个拥有各自 GitHub 账户的开发者。Tom 正在做一个优秀的项目,他在一个名为 /tom/repo 的公共仓库中管理其源代码。Hari 对这个想法感到惊奇,想为这个项目做出贡献。

现在,Hari 有两种方法。

  • Hari 问 Tom:“嘿,Tom,我想为你的项目做贡献。你能不能把我加为贡献者?” Tom 可能同意也可能不同意。由于该项目已经作为仓库提供,他可能只是要求复刻并使用它。
  • 第二种方式是 Hari 自己 fork 这个仓库并开始工作。他不需要等着和 Tom 谈,让 Tom 把他加为贡献者。

这第二种直接复刻仓库的方法对任何贡献者来说都更方便。那么它是如何工作的呢?让我们分步骤来了解一下工作流程。

  1. Hari 复刻仓库 /tom/repo。我们称 /tom/repo 仓库为上游仓库。
  2. 仓库现在可以在 Hari 的 GitHub 账户中以 /hari/repo 的形式使用。我们称 hari/repo 为复刻仓库(Forked Repository)。同时,它也是上游仓库的一个完全拷贝。这个仓库完全脱离了 Tom 的仓库,Hari 可以开始做任何他想做的修改。Hari 首先会克隆仓库,并开始进行修改。
  3. Hari 做好所需的修改,并将修改推送(push)到上游仓库中。
  4. 最后,Hari 创建一个从自己的仓库到上游仓库的拉取请求(Pull Request)。Tom 在他方便的时候审查该拉取请求,如果一切顺利,就批准(approve)并合并(merge)它。

这就是整个工作流程——通过简单而直接的方式来为公共仓库做贡献。一图胜千言,下面是我们讨论的工作流程的演示。

GitHub-Fork
工作流程 - 复刻一个仓库

如何在 GitHub 中复刻一个仓库

复刻一个仓库只需点击一个按钮。

要跟着做,请浏览你想复刻的公共仓库。在页面的右上方,你会发现 Fork 按钮。点击该按钮并等待几秒钟,你会看到,新复刻的仓库会在你的 GitHub 账户下创建。

image-29
Fork 按钮

在复刻仓库后,按照我们上面学到的步骤开始贡献。

我们来练习复刻

作为一个新手,你想通过练习复刻来增强信心吗?让我们来做吧。你可以执行这些任务来练习复刻。

  • 打开这个公共仓库:https://github.com/atapas/fork-me
  • 创建一个与你的 GitHub 用户名相同的文件夹(对我来说是 atapas)
  • 在该文件夹中添加一个 Readme.md 文件,内容可以是你选择的任何文字
  • 在上游创建一个拉动请求 Pull Request。如果一切顺利,我将审查并合并它

如果你出错了,不要担心,继续尝试,你会成功的。这将是一个为开源仓库做贡献的练习场。

总结

  • Git 是一个在开发者社区中被广泛使用的版本控制工具。如果你是 Git 的初学者,可以在这里了解它。
  • GitHub 是一个流行的管理 Git 仓库的应用程序。任何人都可以为公共仓库做出贡献。
  • 复刻是一个很好的工具,可以把别人仓库里的源代码复制到你的仓库里,并对其进行贡献。
  • 学习并使用复刻的工作流程是很简单的。

结束之前......

我希望你觉得这篇文章有帮助。请练习复刻并为开源项目做出贡献。如果你想进一步讨论,可以在 Twitter 上联系我。

我也会在这些平台上分享我在 JavaScript、Web 开发、职业和博客方面的学习成果: