我的团队正在开发一个带有大型第三方SDK的Unity项目。有一个新的预览SDK,允许我们定位一个只有我们两个人可以访问的新设备。我创建了一个新的分支' new_sdk'并在那里集成了SDK并使其与新设备一起使用。
现在继续前进我希望保留原始分支与旧SDK和新SDK的new_sdk分支,但是在分支之间合并SDK之外的更改。团队中的其他开发人员只能访问旧设备,因此我们必须这样做。
一种解决方案是通过.gitignore从源代码管理中排除库文件夹,然后在要切换分支时手动将其复制。但这并不好。
我开始研究.gitattributes并合并本文中的驱动程序: https://medium.com/@porteneuve/how-to-make-git-preserve-specific-files-while-merging-18c92343826b#.m58m7t1qp 但它似乎很复杂,当我按照文章中关于测试存储库的步骤时,我无法使它工作。
有没有办法让合并驱动程序工作并按我的意愿行事?
有更好的方法吗?
答案 0 :(得分:1)
您应该将SDK文件夹作为主项目存储库的子模块。
基本上,您创建了一个新的存储库并将SDK推送到那里,只有文件夹,没有项目文件夹。
然后你进入Git级别的主项目并使用子模块命令:
https://git-scm.com/book/en/v2/Git-Tools-Submodules
此时,您将添加SDK,但主项目将不会跟踪它。推送到您的主项目存储库和SDK将显示为灰色文件夹,基本上是指向其他存储库的指针。
现在,您可以独立推送主项目和SDK。
答案 1 :(得分:0)
git子模块是实现您所需要的选项之一。我在https://github.com/abdes/submodule-docker-dev-workflow在github上编写了一个广泛的文档和一个示例项目,可以帮助您入门,并了解与开发工作流中的git子模块相关的常见方案。
子模块的优点在于容器repo和子模块repo是完全独立的。您可以自由分支容器项目,而无需分支子模块。