【问题标题】:Make directory in private github repo public将私有 github repo 中的目录设为 public
【发布时间】:2019-08-12 19:12:16
【问题描述】:

我在 Github 上有一个私人 repo,Repo A。 Repo A 中的项目结构如下:

dist/
src/
project-file.js
project-file2.js

我想在 Github 上的(新)公共存储库中提供 src/ 目录。

理想情况下,我希望这尽可能自动化。因此,如果我在 Repo A 中更新源文件,我也希望公共 repo 也能轻松更新。

我找到了几个解决方案:第一个涉及使用Github releases and submodules。这似乎使两个存储库保持连接,但我不确定如何将 src/ 目录推送到(?)子模块,然后将其推送到新的公共远程存储库。

我找到的另一个解决方案是using filter-branch on a cloned repo。我可以预见使用后者的唯一问题是两个分支随后会分离,我对回购 A 所做的任何更改都必须再次重新克隆并重新推送到公共回购。

基本上,我有一个私人项目,但我想公开一些文件以供查看。我相信第一个选项,使用子模块是更好的选择,但我不确定如何在实践中做到这一点。我不太精通高级 Git 技术,如果我遗漏了什么,敬请见谅。

【问题讨论】:

    标签: git github


    【解决方案1】:

    Submodule 仍然是一个更简单的选择:

    即:

    cd /path/to/cloned/original/repo
    git rm -r src/
    git commit -m "Remove src"
    git submodule add https://github.com/you/newSrcRepo src
    

    从那里,您可以修改 src 中的文件并推送到新的 repo:

    cd /path/to/cloned/original/repo
    cd src
    # work in src
    git add .
    git commit -m "new src modifications"
    git push
    

    并将新的 src 记录在您的父 repo 中:

    cd ..
    git add .
    git commit -m "src new state"
    

    【讨论】:

      【解决方案2】:

      您可以使用gitexporter CLI 工具。它是一个实用程序,可以处理所有 git commit-tree 并创建一个具有相同提交但仅包含允许的文件和目录的新 git repo。

      示例

      1. 创建config.json
      {
          "forceReCreateRepo": true,
          "targetRepoPath": "my-open-source-repo-part",
          "sourceRepoPath": ".",
          "allowedPaths": ["src/*"],
          "ignoredPaths": [".env", "secret.json"]
      }
      
      1. 运行gitexporter
      npx gitexporter config.json
      
      1. 发布您的新公共回购文件夹my-open-source-repo-part

      您也可以在您的 CI 中使用此脚本,并始终同步公共存储库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-01
        • 2012-02-19
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        • 2019-10-27
        • 2022-12-20
        • 2018-02-15
        相关资源
        最近更新 更多