2013-11-04 171 views
1

「super」-repo在哪裏跟蹤每個子模塊的提交?Git - 子模塊,跟蹤子模塊提交的使用情況

我沒有看到任何.gitmodules

這些信息的我想要實現的是,如果我的標籤「超級」 -repo,有說1.0-alpha,那麼它會記住什麼提交所有子模塊在那個時候,所以當我稍後檢出標籤時,我會將子模塊置於正確的提交位置。

這是可能的,而不需要手動記下每個子模塊的提交位置?

我現在意識到我可以用得到這些信息以後:

git ls-tree <tag> 

但後來我不得不進入每個子模塊和手動籤那個特定的部分組件在提交abc1234 ..

/David

回答

1

子模塊的當前提交散列存儲在與主項目中的提交相關聯的樹對象中。如果您在主項目做一個git ls-tree -r HEAD,每個子模塊由線形式的表示:

160000 commit <hash> <path/to/submodule> 

該行表示應當檢查出匹配在主存儲庫提交輔助模塊中的承諾。

+0

這就是我在問題中所說的種類......但這意味着如果我想回到標籤並使其與包含的子模塊一起工作,則必須手動進入這些子模塊並重置它們不管他們在「超級」項目被標記時所做的任何承諾? – netigger

+0

不,您在主項目中執行'git checkout whatever'後,運行'git submodule update',它會查看主項目中的提交,並檢查子模塊中所需的任何內容。 – twalberg

+0

謝謝..在分支之間切換之後,這是我忘了做得到適當的子模塊版本!你知道信息保存在哪裏(子模塊在哪個提交中)? – netigger