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