我已经html + css + javascript
在 GitHub 上构建了一个项目半年。它一直在一个私有仓库中,只有一个分支。
现在我想让这个存储库部分公开,这样:
用户可以使用该issues
功能提出问题或写需求,我可以回复他们,我们可以进行讨论。
实际上,用户不需要查看代码。但是当我们在 GitHub 上时,我可能想公开一小部分文件。
我不想丢失提交历史。
谁能告诉我应该遵循哪些步骤(最好是命令)?
我是否必须重新组织我的文件夹,例如,创建一个公共文件夹和一个私人文件夹?
首先要了解的是 GitHub 权限模型。提交问题等需要对回购有一定程度的许可。阅读应该足够了。
但读不也意味着“能够看到所有的代码和历史”。并且能够看到甚至意味着能够复制和分叉,即使您控制可以写回您的存储库的内容。并且没有低于“读取(所有代码)”的访问级别。
因此,如果您想保留自己的代码,那么创建除 github 之外的某种项目页面,并利用那里的专用问题跟踪系统,可能对您尝试做的事情更有意义。
如果您确实决定某些代码应该是公开的,那么您必须拥有两个存储库。带有公共代码的 repo 可以设为只读,或者读/写,如果这更好地满足您对该代码子集的需求。无论哪种方式,它都可以主持问题讨论等。
将代码子集拆分为公共存储库并不太难,但如果您希望公共存储库也具有完整的历史记录,那就更难了。您将希望避免创建公共代码的两个不同历史记录,因此您可能必须从私有存储库中删除公共代码。(它可以作为子模块重新引入 - 公共仓库的链接 - 但在最简单的情况下,这确实意味着您需要在单个目录下组织公共代码。)
如果只需要公开当前版本,那么这很简单。您初始化新的存储库,将文件从一个移动到另一个,如果需要,可以创建子模块链接。
如果要发布已发布文件的历史记录,则必须执行一些操作,例如git filter-branch
从原始存储库的(克隆)创建公共存储库。确切的过程取决于确切的要求,但通常您可以使用 (a) asubdirectory-filter
仅发布一个目录的内容(到新存储库的根目录)-但听起来您的代码并未安排成简单的; 或 (b)index-filter
删除您想要保密的文件(同时保留剩余文件的现有目录结构);或 (c) 一个tree-filter
和您喜欢移动、删除或添加文件一样复杂的脚本,将“原始存储库”版本转换为相应的“公共存储库”版本。
如果您确实拆分了历史记录,您可能仍然希望在原始存储库中保留公共文件的历史记录,因为链接存储库的历史记录相当困难。大多数时候这不是一个巨大的实际限制,除非历史的规模相当大。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句