【问题标题】:Private folder (submodule) in a public repo公共仓库中的私有文件夹(子模块)
【发布时间】:2016-10-04 21:59:41
【问题描述】:

我有一个公共存储库。在其中我想使用一个私有的子模块。如果我将此子模块包含在我的公共 repo 中,每个人都可以看到该子模块的内容吗?

【问题讨论】:

    标签: git github git-submodules


    【解决方案1】:

    否:在公共存储库中包含子模块意味着将其 URL 记录在公共 .gitmodules 文件中。

    通过递归克隆您的存储库将无法访问该 URL 处的存储库,而不是单独访问该存储库。

    这就是为什么不能使用submodules with GitHub Pages 的原因:

    您只能将子模块用于指向公共存储库的 GitHub Pages 站点。
    无法使用指向私有存储库的子模块,因为 Pages 服务器无法访问私有存储库存储库。

    【讨论】:

    • 糟糕,谢谢 Vonc。我投了你的票,但接受了下面的 1.7k'er,因为他需要积分 :)
    • @Noitidart 他的回答不正确。你可以在你的公共分支/仓库中发布.gitmodules。
    • 谢谢,转给你了。我非常感谢! :)
    • 重点是:看到带有私有 repo url 的 .gitmodules 并不意味着能够访问所述私有 repo。
    【解决方案2】:

    如果您将带有子模块的分支推送到公共存储库,则意味着公众将能够看到子模块的 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 分支可以有不同的子模块集的方式。

    使用这种方法,您需要相当自律地处理分支的工作,以免您不小心将您的私有分支推向世界。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2011-06-21
      • 2019-04-30
      • 2015-12-27
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多