1

我有一个项目,data文件夹需要私有(但由 VCS 跟踪)。git所以GitHub 上的整个repo 都是私有的。然而,该代码对许多人来说非常有用,所以我想保持公开。

目前我的回购只有一个masterdev。一旦其中的功能dev正常工作,它们就会合并到master. 我想创建一个no_data分支并将其推送到公共 GitHub 存储库。master应该继续跟踪私人回购。我已经为此有一个私人 GitHub 存储库(我们称之为private_project)。project我可以为no_data分支创建一个公共回购。

问题:
a)我如何设置它以便每个分支跟踪一个单独的 repo?

b)由于两个分支之间唯一不同的是公共分支会忽略该data/文件夹,因此我打算将其添加到.gitignore文件中。但是,我希望其余代码在两个分支中保持不变。所以我担心每次合并master到 时no_data,我都必须手动解决.gitignore合并。

4

1 回答 1

1

不。这势必会导致一天或另一天的错误。

使data目录成为一个子模块,具有自己的远程上游仓库(“ private_project”之一),并使用其父仓库(具有上游仓库“ public_project”)声明。

这样,您可以将父 repo 的任何分支推送到“public_project”:没关系。
克隆“public_project”时,其他贡献者将得到的只是完整的 repo 加上对另一个 repo (' private_project') 的引用,他们无法访问(因为它是私有 repo)。
请参阅“ git 子模块究竟是如何工作的? ”。

于 2012-12-11T02:31:03.337 回答