4

许多 github repos 要求在每个重要的代码更改上创建一个 fork。

这与 git 中的分支完全一样。

github为什么要引入fork?

4

3 回答 3

18

(我喜欢 git brunch 的想法——git 用户在周日聚在一起吃很多油炸食品;))

在 github 上 fork 一个项目并在您自己的存储库中进行更改的想法是项目的所有者不需要信任您或授予您对其存储库的推送访问权限。如果您希望他们考虑合并您的存储库中的代码,那么您可以向他们发送拉取请求。GitHub 有一个很好的拉取请求系统,上游开发人员可以在其中审查和评论您的贡献。

在一组值得信赖的开发人员中,每个人都可以推送到一个共享存储库,您通常会推送您开发的每个新功能作为新主题分支,并要求其他人审查您的工作并考虑将其合并。

关于 git 的许多优点之一是,特定分支提示位于哪个存储库并不特别重要 - 提交将始终具有相同的 SHA1sum,因此您可以随意推送和拉取它。它是在 GitHub 上的一个分支中还是被推送到共享存储库或其他任何东西都无关紧要......

于 2011-03-22T10:36:30.277 回答
11

为了稍微解释一下您的“为什么我不能将我的分支推送到他们的仓库?”的问题,请考虑即使 github 让您可以在不破坏每个人的整个仓库的情况下做到这一点,大多数维护者仍然会让他们干净的回购变成数十或数百个分支机构的垃圾场,这并不高兴。

其他看到这些分支的贡献者会假设上游开发人员正在开发它们,即使它们确实是来自第三方的长期被遗弃的半成品贡献。

有趣的是,无论哪种方式,您的工作流程都完全相同,只是在上游存储库的某个位置单击“分叉”按钮。

比较:

  1. git clone git://github.com/somebody/someproject
  2. git checkout -b mycoolfeature
  3. 骇客骇客
  4. git push origin mycoolfeature
  5. 提交 mycoolfeature 分支的拉取请求

对比

  1. 在 github.com/somebody/someproject 点击“fork”
  2. git clone git://github.com/you/someproject
  3. git checkout -b mycoolfeature
  4. 骇客骇客
  5. git push origin mycoolfeature
  6. 提交 mycoolfeature 分支的拉取请求

创建分叉确实没有任何开销。

如果您已经有上游 repo 的克隆,并且您担心必须进行新的克隆并浪费一些时间,请尝试以下工作流程:

  1. 点击分叉
  2. cd someproject (你现有的克隆)
  3. git remote add myfork git://github.com/you/someproject
  4. git checkout -b mycoolfeature
  5. 骇客骇客
  6. git push myfork mycoolfeature
  7. 提交 mycoolfeature 分支的拉取请求

希望这可以帮助!

于 2011-03-28T12:13:34.913 回答
0

github fork 意味着您有一个 github 存储库,因此您可以将更改推送到此。这意味着您所做的更改在 github 上是可见的,但原始所有者不需要包含它们。

创建一个 fork 为您提供了一个可写版本的存储库。

在这方面,分支与分叉完全不同。一个叉子可以有很多分支。

于 2011-03-22T10:28:56.953 回答