2010-01-02 59 views
10

我得到了git submodule的hang((一廂情願的想法?),我想出了更具體的問題,這是一個好兆頭...最初只需要git子模塊更新?

我試圖找到哪個版本子模塊的超級項目指在.gitmodules.git/config中,但沒有提到那裏......
這種情況是我在其根目錄位置(從中導入它們)更改子模塊,然後將它們拉到它們的位置're'submoduled「...
除了承諾從超級項目將這些變化納入超級項目回購,我還需要做」​​「註冊新的拉入子模塊提交嗎?

基本問題是:

,我需要「git submodule update」只有當我第一次克隆上層項目,或子模塊的每拉後(從它自己的回購)?

謝謝

+0

對不起,對於遲到的答案,我沒有看到你的新問題後,你的上一個(http://stackoverflow.com/questions/1979167) – VonC 2010-02-09 08:08:45

回答

15

正如我在前面的回答提到git submodule update,該命令簽出項目,基地的具體版本在他們.gitmodules文件。

GitPro page does insist

這是關於子模塊的重要一點:你記錄他們的確切所處的提交。

你可以看到其呈交由「超級工程」中運行引用(一個引用一個或幾個子模塊):

  • git submodule status(除非你做了一些子模塊內直接提交, thinat情況下,它會在任何子模塊的HEAD已經從存儲在上層項目的SHA-1)或
  • git ls-files --stage尋找模式「160000」項先進的SHA-1面前表現出「+」,在一個特殊的條目GI t指數。

這意味着,每當您在「超級項目」中執行git命令(可能會修改該子模塊提交SHA1)時,您需要一個「git submodule update」。

只有當我第一次克隆超級項目時,或者在每次拉動子模塊(從它自己的repo)之後,我是否需要「git submodule update」?

是的,您必須每次在主項目中下拉子模塊更改時執行此操作。
這是因爲您正在引用子模塊原始回購所在的確切提交(如上所述),並且在您取回回購時,您正在有效修改該提交。