在svn中,您可以将存储库链接到另一个svn存储库中的任何文件夹。我想知道git是否有类似功能?基本上,我希望在我的存储库中有一个git子模块,但是我希望该子模块是指向另一个git存储库而不是整个存储库的子文件夹的指针。这可能吗?
Git不支持部分签出,因此submodule必须指向完整的存储库。
[This thread on the Git mail list提供了一些背景信息。
[This article from Panther Software提供了其他人的一些见识,他们试图实现类似的目标(即,使用Git复制svn:externals
)。
如果两个项目都在您的控制之下,那么我建议您将您感兴趣的“子文件夹”隔离到其自己的独立存储库中。然后,两个项目都可以创建链接到它的子模块。
我遇到了同样的问题。从git级别看,它似乎无法解决,至少在某种程度上,它无法让您轻松拉或推到父仓库。
但是,您可以使用简单的符号链接来解决此限制:
git submodule add http://example.com/repo.git ./submodules/repo
ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory
参考:
通常,当您尝试提取其他项目的子文件夹时,该子文件夹首先应该是一个单独的项目,并且both父项目都应引用该子文件夹。
您可以使用git subtree之类的工具来提取此类子项目的历史记录。然后,您可以使用git子模块或git子树(无论您愿意使用哪种方式)将子树链接回您的项目。