私有Github仓库的私有页面

271

在 GitHub 的文档和 SO 上都没有找到相关内容。但是我想知道是否可以为名为 foo 的私有仓库创建一个 http://foo.github.com ,只有访问 foo 仓库的人才能访问。

我记得曾经读过关于 GitHub Pages 总是公开的内容,但现在似乎找不到了。

令人惊讶的是,我似乎找不到其他人问这个问题。


2
我想,使用Github来托管私有代码库的人并不是很多。或者说,很少有人在使用gh-pages。 - Siddhartha Reddy
1
我认为正确的答案现在应该是 https://dev59.com/XWgv5IYBdhLWcg3wPObz#54340540。 - Fuhrmanator
“企业用户专属页面”现在已加入“Github路线图”。 - joel
13个回答

233

我曾提交了一份关于Github的支持票据,并收到回复确认所有页面都是公共的。现在我已经请求他们添加一条说明到help.github.com/pages。


6
GitHub Pages工作需要你的pages仓库公开吗? - Dennis
36
不,它不会 - 你的仓库可以是私有的。但是发布的页面将是公开的,GitHub没有内置的方法来限制查看权限,只允许私有仓库的贡献者看到它们。 - Merlyn Morgan-Graham
6
请参考此链接(https://help.github.com/articles/what-are-github-pages/),非常清晰地展现了相关信息。 - Derek Adair
// 访问控制是Github上一个非常有趣的问题。我很喜欢这得到了一些关注,@kashyap!谢谢。 - Nathan Basanese
1
补充 @Derek Adair 上面的评论。该网站显示:“警告:即使仓库是私有的,GitHub Pages 网站也可以在互联网上公开访问。如果您的 Page 仓库中有敏感数据,则可能需要在发布之前将其删除。” - Jay Killeen
显示剩余3条评论

67
根据GitHub Pages documentation,所有项目存储库都可以使用生成器进行发布。但是,请注意,私有存储库将发布公共页面。因此,目前还没有办法从私有GitHub存储库创建私有GitHub页面。
编辑:
一个简单的解决方法
对于某些情况可能有帮助的解决方法是,在您希望其保持私有状态(例如在开发阶段)时,将repo重命名为GitHub页面格式之外的其他名称,当准备好公开它时再更正名称。显然,如果您正在寻找一种具有身份验证的发布页面方式,则这仍然无济于事,但如果您只想在进展中隐藏GH页面项目,那么这可能有所帮助。
一个实际的Jekyll(GitHub页面)认证包装器

另外,还有一个名为Jekyll Auth的项目,由GitHubber @benbalter开发,专门用于此类用途。Jekyll Auth为jekyll项目提供了基本的身份验证包装器,包括GitHub页面。查看该存储库的README以获取使用方法。


2
看起来第一个链接已经过时了。https://help.github.com/articles/what-is-github-pages/现在有类似的警告。 - radicaledward101

21

很多答案已经过时(微软收购前/免费私有存储库)。此答案是在宣布了免费私有存储库之后编写的。

Github页面在个人免费私有存储库上不可用,如存储库设置中所示:

输入图像描述

2020年(最基本的计划现在是“团队”):

升级到GitHub团队或将此存储库设置为公共以启用页面

注意事项

即使您升级,所有页面也都是公开的。升级仅在私有存储库上启用页面特性,就像启用其他功能一样。页面特性是公开可用的静态Web托管。


6
这真是个令人失望的事情。他们打着响铃和口哨宣传私有代码库免费可用,但实际上大幅削减了其功能。 - Robert Estivill
1
警告:GitHub Pages 网站在互联网上是公开可见的,即使它们的存储库是私有或内部的。如果您的网站存储库中有敏感数据,您可能需要在发布之前将其删除。这意味着如果存储库是私有的,页面仍然可见,但代码不可见,对吗? - youHaveAlsoBeenABeginner
1
@你也曾经是初学者 - 我相信这是准确的。这个页面将是公开的,而不是代码。 - Corey
因为页面本身仍然是公开的,所以被踩是非常重要的警告。 - joel

18
GitHub Enterprise Cloud的客户现在可以实现这一点:GitHub Pages访问控制
要在页面上启用访问控制,请导航到您的存储库设置,并单击下拉菜单,在站点的公共和私有可见性之间切换。 输入图像描述

1
“GitHub企业云”中的“云”非常重要!我找不到这个设置在我的公司的GitHub企业实例里。另请参见https://github.community/t/access-control-for-github-pages/156911/20上的讨论。 - snark

15

page.github.com的介绍中提到:

Github Pages 是免费托管和易于通过我们的网站发布的,

但从未提到访问控制。

GitHub 页面帮助也没有提到任何ACL。
它们最好在gh-pages分支中进行管理,并可以在它们自己的子模块中进行管理。
但是,一旦由GitHub发布,就没有任何限制以保证可见性。


15
确实,所有页面都是公开的。我从 GitHub 的支持票证上得到了这个答复。 - kashyap

12

这比使用hasdocs要好得多,因为您不需要向不受信任的第三方应用程序授予权限来访问您的repo。 - Tommz

9
如上所述,Github页面不支持该功能。当我们团队决定在内部和私下托管项目文档(静态HTML)时,我也遇到了同样的问题。最终我创建了一个服务https://www.privatehub.cloud。它基本上是一个带有Github OAuth身份验证的简单代理服务器,因此它只返回具有正确MIME类型的GitHub存储库内容。按设计,只有能够访问foo的人才能在https://bar-foo.privatehub.cloud看到foo内容。从功能角度来看,您可以将其视为带有内置身份验证的简化版GitHub页面。
不幸的是,Github OAuth不允许请求对私有存储库的只读访问权限,因此服务器需要完全访问权限(显然,它不会向您的存储库写入任何内容)。由于GitHub API仅允许检索小于1 MB的文件,因此该服务无法返回较大的文件。然而,我发现该服务非常适合用于内部文档或网站即将发布的版本等小型项目。

1
注意:此服务已经失效(或可能暂时崩溃)。 - Jason Axelson

6
2021年1月:GitHub Enterprise(目前不适用于github.com)已经支持此功能。
请参见:

GitHub Pages 访问控制

现在,GitHub Pages 提供了限制访问的选项,使网站仅对发布该页面的存储库用户可见。

使用访问控制,您可以使用 GitHub Pages 在企业内部发布和共享内部文档和知识。

与此同时,我们引入了以下能力:

  • 存储库管理员可以选择是否公开显示 GitHub Pages 网站或仅允许具有对该存储库访问权限的用户查看。
  • 私有和内部存储库均支持私有可见性。对于内部存储库,您的企业中的每个人都可以使用登录 github.com 时使用的相同凭据查看页面。
  • 组织管理员可以配置成员将能够为其页面选择的可见性选项。例如,您可以强制要求成员只能私下发布内容。

今天,在 GitHub Enterprise Cloud 上一般提供此功能。
要在页面上启用访问控制,请转到存储库设置,并单击下拉菜单以切换站点的公开或私有可见性。

Private publishing for GitHub Pages -- https://i2.wp.com/user-images.githubusercontent.com/55514721/101868473-46f81880-3b32-11eb-9708-a8537f41adaf.png?ssl=1


3
作为替代方案,目前可以使用GitLab来实现与OP所要求的完全相同的功能,而不是使用GitHub。参见GitLab Pages访问控制的文档。由于GitHub不支持此功能,如果将项目迁移到GitLab不成问题,则这是一个很好的解决方法。

2

很遗憾,到了2020年我们还不能拥有私有 Github 页面:

图片描述在此


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