如果我将别人的私有Github仓库fork到我的账户中,它会出现在我的账户中作为一个公共仓库吗?

288

有人向我授权可以访问他们在Github上的私有repo。我的目标是将这个项目fork到自己的账户中,以便利用Github的pull request功能。

我在Github上只有一个基本账户,无法创建自己的私有repo。但如果我将别人的私有repo fork到我的账户中,它会显示为公开吗?

4个回答

316

不可以。你可以将其fork,但它仍然保持私有。

私有协作者可以在没有自己付费计划的情况下,将你添加到他们的任何私有存储库分叉。他们的分支不会影响你的私有存储库配额。

https://github.com/plans


3
是的,我已经看过了。我相当确定这是一个愚蠢的问题,但你能详细解释一下最后一句话吗? - Terence Ponce
3
它仍然保持私密,我刚刚检查过 :) - ebaxt
28
跟进问题:如果您在主帐户上撤销对存储库的访问权限...是否会删除您的 fork?或者至少撤销对您自己的 fork 的访问权限? - tslater
16
当你 fork 一个仓库时,你成为了它的所有者。因此,即使这个 fork 的原始仓库被删除,你的 fork 也将保持不变。而且,由于你是这个 fork 的管理员,你仍然可以添加合作者(他们也可以 fork),将仓库所有权转让给任何用户或组织(orgs 可以添加管理员和只读用户,他们也可以 fork),甚至可以将仓库设为公开。最后,利用这些事实故意欺骗 GitHub 以获取"免费"私有仓库是违反其服务条款的,如果你尝试这样做,他们可能会删除你的账户。 - namuol
20
@namuol,正如Planet Bips在回答中解释的那样,情况已经发生了变化。在私有仓库中,当主仓库被删除时,分支也会被删除。此外,如果协作者失去对私有仓库的访问权限,分支也会被删除。详情请参见 https://github.com/blog/2034-greater-control-over-forks-of-your-private-repositories。 - Matthew D. Scholefield
显示剩余2条评论

37

当您在主干(主要代码库)上取消成员的访问权限时,它也会删除派生的代码库。因此,如果您将成员添加到团队中,并且他们从主干库进行了分支,请确保在将其从团队中删除之前,您已合并了他们的更改或者拥有他们更改的副本,因为成员派生的代码库将在被删除时一并删除,如果您只关心这些更改,您将无法获取这些更改。


1
你的回答与Github帮助文档不一致。我自己还没有尝试过。 - Don Kirkby
4
似乎在移除团队成员(https://help.github.com/articles/what-happens-when-i-remove-a-member-from-a-team-in-my-organization)和移除协作者(https://help.github.com/articles/what-happens-when-i-remove-a-collaborator-from-my-private-repository)之间存在差异。这似乎取决于私人仓库是否是组织的一部分(删除派生版本)或不是(保留派生版本)的区别。 - user44484
10
现在这是真的:https://github.com/blog/2034-greater-control-over-forks-of-your-private-repositories - VonC

12

真正的答案。

有三种类型的存储库:私有、公共和内部。内部存储库需要企业帐户,所以我们现在先忘记它们。:)

对其中之一的任何分支都保留其类型。公共存储库的分支是公共的,私有存储库的分支是私有的。删除对私有存储库的访问会删除该人的分支。

删除私有存储库会删除所有私有分支,这些分支也是私有的。如果您希望保留副本,则必须自己克隆并发布。这可能不被代码许可证允许。删除公共存储库将使所有直接分支成为新的主分支。

只有主分支可以从私有更改为公共,反之亦然。

执行任何操作都会断开所有分支,并使它们成为新的主分支,都保留其现有类型。

如果您希望在不删除其他(私人)分支的情况下删除您的私有存储库,请先将其设为公共,这将使所有私有分支成为私有主分支,然后再删除存储库。

TL:DR; 如果存储库是公共的,则您的分支是公共的,并且永远保持公共。如果原始存储库是私有的,则您的分支是私有的,如果主分支或您不再拥有访问权限,则它将消失,您必须反复克隆和更新才能确保保留它。

这应该可以回答所有关于分叉和删除的问题。:)


10

3
好的,那很愚蠢。我原以为fork本质上是在别人账户上的一个硬复制。那么如何使它变成永久的呢?是下载再重新上传为新项目吗? - Jon Grah
1
是的@Jon Grah,您需要下载并重新上传到硬拷贝,通常软件有一个交接点,原始作者停止维护并祝福分叉项目的人。如果是这种情况,他们将归档其项目,而分支将持续存在。还要注意的另一件事是,如果存储库被删除但您有本地副本,则您的分支将在github上被删除,但您仍然可以创建存储库添加远程并将项目推送上去。分叉可取的原因之一是因为您可以使用分叉更新原始内容或使用原始内容更新分叉(如果发生更改)。 - Michael Dimmitt

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