2009-07-13 156 views
23

在svn中,您可以將存儲庫鏈接到另一個svn存儲庫中的任何文件夾。我想知道git是否有類似的功能?基本上我想要一個git子模塊在我的倉庫中,但是我希望子模塊是指向另一個git倉庫的子文件夾的指針,而不是整個倉庫。這可能嗎?Git Submodule到子文件夾

回答

18

Git不支持部分簽出,所以submodule必須指向一個完整的存儲庫。

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

This article from Panther Software提供了其他人嘗試實現類似目標的一些見解(即使用Git複製svn:externals)。

如果這兩個項目都在您的控制之下,那麼我建議您將您感興趣的「子文件夾」分離爲其自己的獨立回購。然後這兩個項目都可以創建鏈接到它的子模塊。

+0

是的,這聽起來像子文件夾應該是它自己的模塊,如果它要兩個項目之間共享。 – 2009-07-13 19:17:27

+1

鏈接死於Panther軟件http://panthersoftware.com/articles/view/3/svn-s-svn-externals-to-git-s-submodule-for-rails-plugins – 2016-08-22 11:07:32

3

通常,當您嘗試提取某個其他項目的子文件夾時,該子文件夾首先應該是一個單獨的項目,並且父項目都應該指向它。

您可以使用像git subtree這樣的工具提取這樣的子項目的歷史記錄。然後,您可以使用git submodule或git subtree將子樹鏈接回您的項目,無論您喜歡什麼。

+9

並非總是如此。例如,我想將Twitter Bootstrap拖入我的項目中以使用.less文件。我不需要所有的例子和解析器等,只需從/ lib /文件夾中獲取.less文件即可。目前我無法使用子模塊自行獲取 – Hades 2012-01-08 08:56:28

13

我遇到了同樣的問題。它從git級別看起來並不可行,至少不能讓您輕鬆地將其推向父級回購。

但是,您可以解決此限制,通過一個簡單的符號鏈接:

  1. 設置你的子模塊在一個單獨的目錄。
    • git submodule add http://example.com/repo.git ./submodules/repo
  2. 的地方創建一個符號鏈接到子文件夾你想要的:
    • ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory

參考文獻: