我有一个项目使用两个独立维护的库。为了避免每次更改库时手动复制文件,我设法使用this example from github创建了两个子树。
我在这个工作目录的根目录中有自己的代码。我还有foolib/
和barlib/
作为另外两个回购的子树。假设我想看看我是否可以使用版本1.20的foolib而不是主人,因为我知道一个人的好,不会改变。那么也许我想知道1.21是否更好。我的想法是,如果我这样git checkout foolib-1.20
将{1.}}中的版本1.20代码放在我身上。这不会发生。相反,整个工作目录被替换为foolib 1.20。这不是很有帮助,似乎否定了foolib/
的有用性。
答案 0 :(得分:1)
如果您需要引用库的特定提交,最好使用submodules。
这样,您的父目录可以记录对这些库repos的引用,以及它们的确切提交 请注意,这不会阻止您直接从工作树中删除库(假设您提交并将这些库推回到其上游存储库,和提交您的父存储库:请参阅“True nature of submodules” )
但是,子模块可以包含一些陷阱(参见“how exactly does git submodule work”)