我有一个公共存储库。在它中,我想使用一个私有的子模块。如果我把这个子模块包含到我的公共回购中,每个人都能看到这个子模块的内容吗?
发布于 2016-06-05 04:30:26
否:在公共存储库中包含一个子模块意味着在公共.gitmodules文件中记录其URL。
通过存储库的递归克隆访问该URL上的存储库将不会比它本身更容易访问。
例如,这就是为什么不可能使用带有GitHub页面的子模块:
您只能对指向公共存储库的GitHub页面站点使用子模块。 使用指向私有存储库的子模块是不可能的,因为页面服务器无法访问私有存储库。
发布于 2016-06-05 04:37:44
如果将带有子模块的分支推到公共存储库,这意味着公众将能够看到子模块的URL。公众是否能够看到子模块的内容取决于您是否让公众可以访问它。例如,如果您将其保存在私有Github存储库中,则公众将能够看到URL,但无法访问内容。
所有添加子模块的工作实际上都是将一个条目放到.gitmodules中的url中,而不是粘贴到该存储库的内容中。该URL是否可公开访问完全是另一回事。
如果您想保持到私有存储库的URL都是私有的,那么您必须在一个单独的本地分支上工作,并且永远不要将该分支推到公共存储库。例如:
git clone somePublicRepo
cd somePublicRepo
git branch neverPushThisBranch
git checkout neverPushThisBranch
git submodule add privateRepo
git submodule update由于描述存储库包含哪些子模块(.gitmodules)的文件与Git中的任何其他文件一样被签入,如果您签出分支上的子模块,除非将分支推到公共场所,否则没有人会看到该子模块。
这就是不同的git分支可以拥有不同的子模块集的方式。
使用这种方法,您需要对分支的工作方式进行相当严格的管理,以免意外地将您的私人分支推向世界。
发布于 2022-11-02 15:01:55
我只是证明增加私人回购是可能的,@Vonc评论是正确的。
重点是看到一个带有私人回购url的.gitmodules并不意味着能够访问所谓的私有回购。
我还发现,如果git rm -r --cached已经在索引中,我们就需要使用它。
https://stackoverflow.com/questions/37638034
复制相似问题