簡體   English   中英

將私有 github 存儲庫中的目錄設為公開

[英]Make directory in private github repo public

我在 Github 上有一個私有倉庫 Repo A Repo A中項目的結構如下:

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

我想在 Github 上的(新)公共存儲庫中提供src/目錄。

理想情況下,我希望這盡可能自動化。 因此,如果我更新 Repo A 中的源文件,我希望公共存儲庫也能輕松更新。

我找到了幾個解決方案:第一個涉及使用Github 版本和子模塊 這個似乎使兩個存儲庫保持連接,但我不確定如何將src/目錄推送到(?)子模塊中,然后將其推送到新的公共遠程存儲庫。

我發現的另一個解決方案是在克隆的 repo 上使用filter-branch 我可以預見到使用后者的唯一問題是兩個分支然后變得分離,我對回購 A 所做的任何更改都必須再次重新克隆並重新推送到公共回購。

基本上,我有一個私人項目,但我想公開一些文件以供查看。 我相信第一個選項,使用子模塊是更好的選擇,但我不確定如何在實踐中做到這一點。 我不太精通高級 Git 技術,所以如果我遺漏了什么,我深表歉意。

子模塊仍然是一個更簡單的選擇:

那是:

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 中的文件並推送到該新存儲庫:

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

並在您的父倉庫中記錄新的 src:

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

您可以使用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 中使用此腳本並始終同步公共存儲庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM