我有一个项目,其中data
文件夹需要私有(但由VCS跟踪)。所以GitHub上的整个git
回购都是私有的。然而,这些代码对很多人来说非常有用,所以我想保持这种公开。
目前我的repo只有master
和dev
。一旦dev
中的功能正常运行,它们就会合并到master
中。我想创建一个no_data
分支并将其推送到公共GitHub仓库。 master
应继续跟踪私人仓库。我已经有了一个私有的GitHub回购(让我们称之为private_project
)。我可以为project
分支创建一个名为no_data
的公共仓库。
问题:
a)如何设置它以便每个分支跟踪一个单独的回购?
b)由于两个分支之间唯一不同的是公共文件夹将忽略data/
文件夹,我只是计划将其添加到.gitignore
文件中。但是,我希望其余代码在两个分支中保持不变。所以我担心每次将master
合并到no_data
时,我都必须手动解析.gitignore
合并。
答案 0 :(得分:1)
别。这必然导致白天或其他方面的错误。
将data
目录设为 submodule ,其拥有远程上游回购(“private_project
”一个),用其父级仓库(具有上游仓库'public_project
')声明。
这样,您可以将父回购的任何分支推送到'public_project':这没关系。
克隆'public_project'时其他贡献者所能得到的只是完整的回购加上对另一个回购('private_project
')的引用,他们无法访问(因为它是私有回购)。
请参阅“How exactly does git submodule work?”。