2015-10-22 98 views

回答

1

當您想要將其他git存儲庫導入到當前的git存儲庫(稱爲「超級項目」)時添加。要執行該操作,它會在.gitmodules中記錄存儲庫的路徑,從而將其添加到索引。

子模塊init將創建記錄在索引中的已經存在的子模塊。這是通過在git中配置索引中找到的路徑來實現的。

地址:

在給定的路徑添加給定存儲庫作爲一個子模塊的變更下一個要提交到當前項目:目前 項目被稱爲「上層項目」。

初始化:

初始化通過複製子模塊名和URL從.gitmodules.git/config記錄在索引(其中加入 和致力於其它地方)的子模塊。

因此初始化檢查出來的子模塊已記錄在索引,其中克隆你會做上層項目時

git submodule add my_sub_project directory_in_superproject 

通常之前添加:在項目內

git clone superproj 

那麼:

git submodule update --init 
+0

init的含義仍然與以前一樣模糊,引用文檔只是爲了重複它們而分散注意力......爲什麼複製需要在git中進行?如果'init'被跳過會發生什麼?將子模塊放置在存儲庫中有兩個單獨的步驟是什麼理由? – matanster

+1

'.gitmodules'是你如何與他人共享子模塊。如果你用子模塊克隆一個repo,看看'.git/config' - 它不知道子模塊。 'git submodule init'將'.gitmodules'文件中的子模塊導入到本地存儲庫中。 –

+1

@matt add僅放置子模塊的條目,即指針。 init會將條目帶到您的本地存儲庫。跳過init不會允許您使用子模塊(即帶入代碼,提交等)。對於每個子模塊都有一個「gitlink樹條目」,需要分配一個邏輯名稱,該名稱保存在.gitmodules中。我想可能會有一個一步的過程,但這樣你有更多的靈活性和清晰度。但是,如何初始化(即檢出)已存在的子模塊? – g24l

1

當您自己想要將新子模塊添加到項目時,您可以使用git submodule add

當您克隆具有子模塊的項目或其他人已將子模塊添加到項目時,您可以使用git submodule init

+0

很棒的回答。但那你什麼時候會'git submodule update'? – matanster

相關問題