fork一个git仓库的目的是什么?

12
在完成这个Github教程之后,我比开始时更加困惑了。我认为fork一个repo本质上就是创建一个带有其他用户指定名称的repo副本。然后我可以向新的repo提交,而不必考虑fork的那个repo。
不幸的是,情况似乎并非如此。我浏览到了自己的一个repo(这可能会有问题),然后在Github上点击了“Fork”按钮,但什么都没发生。我完成了教程,但似乎什么也没有改变。编辑/提交/推送仍然指向原始repo。

2
我认为你不能分叉自己的代码库,是吗?只能分叉别人的。 - Ry-
你不能 fork 自己的代码仓库,这完全是为了贡献而设计的。 - Jerric Lyns John
2个回答

28

你 fork 别人的仓库:

在某个时候,你可能想要为别人的项目做出贡献,或者想要使用别人的项目作为自己的起点。这被称为“forking”(分叉)。

这将创建一个包含所有历史记录的仓库副本供你使用,你可以向其中提交更改。按照教程中所建议的方式尝试 fork Spoon-Knife 项目。

开源开发中的 fork-and-pull 模型允许任何人开始进行更改而不必最初面对或请求项目所有者的许可。

如果你希望做出贡献,你可以通过你 fork 的仓库向原始仓库发送 pull requests


此外,如果您想进行一些更改,并将其作为拉取请求发送回来,我认为最好先在一个不同的分支上工作,而不是直接在主分支上工作。 - ustun
你可以从你的派生仓库向原始仓库发送拉取请求。这意味着你可以从原始仓库请求将文件从派生仓库移动到原始仓库,对吗?如果你从派生仓库这样做,那不就是推送了吗? - Victor Engel
2
@VictorEngel 不,你正在向上游(原始)存储库的所有者发出请求,以从你的分叉存储库中“拉取”更改。你在问:“请问您能否拉取我的更改?” - David Hu
@David,感谢你的澄清。那很有道理。 - Victor Engel

3
  1. 您需要fork一个外部repo,但您没有提交权限,以便获得完全控制权的repo
  2. 您需要创建forked repo的本地克隆副本以便使用它进行工作

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接