Git Submodule到子文件夹

时间:2009-07-13 18:28:34

标签: git dvcs git-submodules

在svn中,您可以将存储库链接到另一个svn存储库中的任何文件夹。我想知道git是否有类似的功能?基本上我想在我的存储库中有一个git子模块,但我希望子模块是指向另一个git存储库的子文件夹的指针,而不是整个存储库。这可能吗?

3 个答案:

答案 0 :(得分:20)

Git不支持部分结帐,因此submodule必须指向完整的存储库。

This thread on the Git mail list提供了一些背景信息。

This article from Panther Software提供了其他人尝试实现类似目标的一些见解(即使用Git复制svn:externals。)

如果两个项目都在您的控制之下,那么我建议您将您感兴趣的“子文件夹”与其自己的独立仓库隔离开来。然后两个项目都可以创建链接到它的子模块。

答案 1 :(得分:17)

我遇到了同样的问题。它看起来不像git级别,至少不能让你轻松拉动或推送到父级仓库。

但是,您可以使用简单的符号链接解决此限制:

  1. 在单独的目录中设置子模块。
    • git submodule add http://example.com/repo.git ./submodules/repo
  2. 在所需位置的子文件夹中创建符号链接:
    • ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory

  3. 参考文献:

答案 2 :(得分:3)

通常当您尝试提取某个其他项目的子文件夹时,该子文件夹首先应该是一个单独的项目,两个父项目应该引用它。

您可以使用git subtree之类的工具提取此类子项目的历史记录。然后,您可以使用git子模块或git子树将您的子树链接回项目,无论您喜欢哪种。