在GitHub上有一个公共仓库的私有分支?


126

我在GitHub存储库中有一个公共的PHP项目,其中仅包含一个分支(主机)。

我想拥有一个对我来说是私有的单独分支/叉(我已经为私有GitHub存储库付费)。我希望能够合并从私有分支/分支到公共仓库的更改,反之亦然。

考虑到这一点,这是我的问题:

  1. 我可以在公共回购中设立私人分支吗?
  2. 我可以将自己的公共存储库分叉到自己的私有分支/叉中吗?
  3. 如果以上两种情况均可行,哪种方法最好?如果没有,我应该如何进行?

1
将公共存储库派生为私有存储库不是最好的主意,在该存储库中您创建了几个不推(回)回公共存储库的分支(反之亦然)?
Legolas

1
那就是我要问的,我希望能够创建一个公共仓库的副本,但是我的更新是私有的(除非我想将特定的东西推回给公众)
Lizard


@assylias,您能回答一下吗?我认为这是最好的答案,在我自己找到文章之前,我没有注意您的评论。
mbh86 '19

@ mbh86并不是真正的答案,只是一个链接,我没有时间将它变成答案。但是,如果您想使用该页面的内容在此处创建答案(并参考原始站点),则肯定可以帮助其他用户,您会得到我的支持:-)
assylias

Answers:


69
  1. 复制您的仓库
  2. 将重复的存储库设为GitHub上的私有存储库。
  3. 将私人存储库克隆到您的计算机
  4. 将遥控器添加到您的公共仓库中(git remote add public git@github.com:...)
  5. 将具有用于您的公共仓库的提交的分支推送到该新的公共远程服务器。(确保您不会意外提交仅私人代码)
  6. 您可以使用“ git fetch public”对公共仓库进行更改,然后将其合并到本地并推送到您的私有仓库(源远程)。

复制对我来说很好,尽管我必须按相反的顺序进行,首先创建一个私有仓库,然后从命令行那里复制公共仓库。谢谢!
2013年

103

在公共仓库中是否可以有私人分支?

在GitHub上,您的存储库是公共的或私有的;您不能选择性地仅对分支进行“私有化”。

我可以将自己的公共存储库分叉到自己的私有分支/叉中吗?

您可以将公共存储库克隆到本地计算机,根据需要进行分支,而不必将您的“私有”分支推到上游(通过指定将哪个分支推到原始位置:git push origin mastergit push origin branch-i-want-to-be-public:master)。

哪种是最好的前进方式/我应该如何进行?

为了利用GitHub进行公共和私有开发,我建议分叉GitHub中的公共分支,将新fork的设置更改为“ Private”,然后将私有版本克隆到本地计算机。当您准备公开更改时,将所有内容推送到GitHub上的私有fork,然后使用拉取请求有选择地将分支复制到公共仓库。

要在GitHub上将存储库设为私有,您必须具有升级(付费)帐户。如果您只是免费帐户,那么您仍然可以使用我建议的第一个过程- 将public克隆到本地计算机,分支,并将特定的“ public”分支推送到原始位置 -不需要私人回购。

如果您有付费的GitHub帐户,或者正在使用提供公共和私有派生和拉取请求的另一项服务(例如BitBucket),则可以使用以上两种方法之一将代码公开。


32
GitHub不允许您将公共存储库的分支设为私有。您必须复制该存储库以使其私有,然后您将失去与公共存储库的连接。我想知道您是否可以将公共存储库添加为私有存储库的本地克隆的单独远程目录。然后将分支推送到该遥控器。
mj1531

3
不幸的是,这意味着无法使用拉取请求将更改从存储库的私有“ fork”拉到公共副本。
Michael Mior

6
GitHub现在为免费帐户提供无限的私有存储库。
弥敦道F.19年

1
鉴于推荐的工作流程(来自私有分叉的PR)不起作用,因此这实际上不是最佳答案。@ mj1531的答案是更好的工作流程。
stewSquared

2

我发现还有另一种更好的解决方案,因为它不会在同一台计算机上导致重复的存储库。

  • 使用您要私有的内容创建分支。
  • 在GitHub上创建一个新仓库,将其设置为private。
  • 将新的GitHub存储库添加为计算机上存储库的第二个远程存储库。
  • 将私有分支推送到第二个遥控器。

最终结果是1个存储库和2个远程存储库。1个公开,1个私有。
只需注意要推送的名称即可。


1

1.)是否可以在公共回购中拥有私人分支

据我所知,没有。

2.)我可以将自己的公共回购分叉到自己的私有分支中吗

不,您不能将完整的存储库(1-n个分支)分叉到单个分支中。好吧,实际上,如果您只是分叉完整存储库的一个分支,就可以。只需将其添加为远程服务器或从克隆开始即可。

您可能也对稀疏结帐感兴趣。

3.)如果以上两者都可行,那是最好的方法

不适用

4.)如果都不可行,我应该如何进行?

不适用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.