gpt4 book ai didi

GitHub:将私有(private)存储库部分公开

转载 作者:太空狗 更新时间:2023-10-29 13:03:10 26 4
gpt4 key购买 nike

我在GitHub上用html + css + javascript搭建了半年的项目。一直在私有(private)仓库,只有一个分支。

现在我想让这个存储库部分公开,这样:

  1. 用户可以使用issues功能提出问题或写需求,我可以回复他们,我们可以讨论。

  2. 实际上,用户不需要看到代码。但由于我们在 GitHub 上,我可能想公开一小部分文件。

  3. 我不想丢失提交历史。

谁能告诉我应该遵循哪些步骤(最好是命令)?

我是否必须重新组织我的文件夹,例如,制作一个公共(public)文件夹和一个私有(private)文件夹?

最佳答案

首先要了解的是GitHub权限模型。提交问题等需要对 repo 的某种级别的许可。阅读应该足够了。

但阅读确实也意味着“能够看到所有代码和历史”。能够看到甚至意味着能够复制和 fork ,即使您控制可以写回您的存储库的内容。并且没有低于“读取(所有代码)”的访问级别。

因此,如果您想将自己的代码保密,那么在 github 之外创建某种项目页面,并利用那里的专用问题跟踪系统,可能对您尝试做的事情更有意义。

如果您确实决定某些 代码应该公开,那么您必须有两个存储库。带有公共(public)代码的 repo 可以设为只读,或者如果能更好地满足您对该代码子集的需求,则可以设为读/写。无论哪种方式,它都可以主持问题讨论等。

将代码子集拆分到公共(public)存储库中并不,但如果您希望公共(public)存储库也具有完整的历史记录,那就更难了。您将希望避免创建两个不同的公共(public)代码历史记录,因此您可能必须从私有(private)存储库中删除公共(public)代码。 (它可以作为一个子模块重新引入 - 一个指向公共(public)存储库的链接 - 但在最简单的情况下,这意味着您需要将公共(public)代码组织在一个目录下。)

如果只需要公开当前版本,那就很简单了。您初始化新的存储库,将文件从一个移到另一个,如果需要,创建子模块链接。

如果您想发布已发布文件的历史记录,那么您必须执行类似 git filter-branch 的操作,以从原始存储库(的克隆)创建公共(public)存储库。确切的过程取决于具体的要求,但通常您可以使用 (a) subdirectory-filter 来仅发布一个目录的内容(到新 repo 的根目录)——但听起来就像您的代码没有安排得那么容易;或 (b) index-filter 删除您想要保密的文件(同时为剩余文件保留现有目录结构);或 (c) tree-filter 和一个你喜欢移动、删除或添加文件的复杂脚本,将“原始 repo ”版本转换为相应的“公共(public) repo ”版本。

如果您确实拆分了历史记录,您可能仍希望将公共(public)文件的历史记录保留在原始存储库中,因为链接存储库的历史记录相当困难。在大多数情况下,这并不是一个很大的实际限制,除非历史的规模相当可观。

关于GitHub:将私有(private)存储库部分公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44261626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com