2012-03-20 138 views
1

我在裸回購中面臨子模塊的奇怪問題。我說明我做了什麼。子模塊裸回購問題

我有一個包含4個模塊的回購。它看起來像這樣 - * Superepo(頂級回購) - 我向此回購添加了以下子模塊:: mod_1,mod_2,mod_3和mod_4(內部子模塊)。 之後,我從這個Superepo創建了一個裸回購,並將其命名爲superepo.git

現在我使用此裸回購來分享不同的物流。

我將裸露回購以及所有子模塊一起克隆到名爲〜/ clone的目錄中。 (git clone --recursive〜/ Superepo.git clone)。 我修改了其中一個克隆子模塊(mod_1和mod_2)中的內容。我對這些子模塊進行了這些更改。我也承諾對superepo「克隆」進行更改。 (〜/克隆)

然後我通過使用「git push〜/ superepo」通過了更改到裸superepo。

現在有人試圖克隆裸回購。但是,他得到的錯誤如下 - >
致命:引用不是樹xyz(xyz = sh1的mod_1提交) 無法在子模塊路徑mod_1中籤出xyz。

我有點笨,我可以做錯了。我是否對裸回購或超模塊做錯了?

回答

2

您應該將您在子模塊中所做的更改推送到子模塊的原始回購。到目前爲止,您在子模塊中進行了更新,並更新了封裝的回購以查看該更新,但是對於新的克隆,它不知道該更新,因爲您尚未將其推送到子模塊回購,這將是當你克隆時看到。

+0

我不明白你的觀點。建議我做錯的步驟:Step_1:我在我的克隆中進行了更改。 (〜/克隆/ mod_1和〜/克隆)。步驟2:然後我將更改推送到此更新克隆的裸回購。第3步:然後有人克隆這個更新的裸回購。所以,根據我的理解,這個新的克隆應該體現在這個新的克隆中。或者可能是我在這裏錯過了一些關於git的非常imp的概念。 – 2012-03-20 21:42:43

+1

你需要兩個推動步驟:'(cd mod_1; git push ...)'和(回到子模塊的超級回購)'git push ...'。這樣,新的提交和樹在遠程的mod_1中,以便從遠程獲取的人可以看到它們。推回超級回購並不會更新遠程的mod_1,只會更新遠程的超級回購。 – torek 2012-03-20 22:02:23

+1

@ agent.smith - 您致力於子模塊並執行其他步驟並推送主要的回購。您還應該推入子模塊回購庫,因爲外部子模塊回購庫是在克隆時看到的。 – manojlds 2012-03-20 22:05:59