gpt4 book ai didi

git - 如何只打开 git 仓库的一部分

转载 作者:太空狗 更新时间:2023-10-29 13:54:06 24 4
gpt4 key购买 nike

我目前正在开源一个我们一直在我们自己的私有(private) git 服务器上开发的项目。我们希望在 GitHub 上开源该项目的部分,因为开发中仍有一些功能需要解决。

特别是,假设我的 git 存储库中有以下目录:

  • 子目录 1(公共(public))
  • 子目录 2(公共(public))
  • 子目录 3(私有(private))

我们希望将目录 1 和目录 2 公开,同时将目录 3 保密。有什么好的方法吗?

最佳答案

我最好的猜测是你想使用 submodules .您可以让您的顶级目录只包含这三个子模块。两个将公开,一个不公开。

父项目只知道子模块所需的提交 SHA1,因此它不会包含有关私有(private)项目的任何实际信息。

如果你不想保留历史,你可以简单地将这三个目录复制到新的地方,在其中运行 git init,然后提交。

如果你确实想保留历史,你会想做这样的事情:

git clone original-project project1
cd project1
git filter-branch --prune-empty --subdirectory-filter subdir1 -- --all

每个子项目一次。 filter-branch 命令重写历史,只留下给定的子目录作为顶级。这显然具有潜在的破坏性(尽管它在 refs/originals/* 中留下了 refs 的副本)因此在单独的克隆中执行此操作非常重要!

无论哪种情况,您都可以创建自己的 super 项目:

mkdir superproject
cd superproject
git init
git submodule add <URL of central project1 repo>
git submodule add <URL of central project2 repo>
git submodule add <URL of central project3 repo>
git commit

使用中央 URL 很重要;当人们克隆您的 super 项目并运行 git submodule update --init 时,它将从这些 URL 克隆子模块。

关于git - 如何只打开 git 仓库的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com