2012-04-02 66 views
1

我在使用git分支時遇到了一個問題。 在主分支中,我有一個包含標籤v2.0的子模塊。 我分支出一個新的分支說修復,並對其人工製品進行了一些更改,並通過「git checkout v3.0」將子模塊更新到v3.0。我做了一個提交。 現在我轉回到主,與「git結帳主」。它顯示一條消息「M submodule」,指示子模塊配置已更改並顯示新的更改。子模塊在主分支中也變爲v3.0。分支中的子模塊配置

爲什麼會發生這種情況。爲什麼不能在沒有自動更改子模塊版本的情況下在分支之間切換?

+0

您確定您提交了新版本的子模塊嗎? – knittl 2012-04-02 15:26:21

+0

子模塊更新並提交,但在外部。它不會在超級項目中改變。我剛剛在新分支中檢出了子模塊的新標籤,將其提交併在我看到此信息時切換回主標籤。 – maxmelbin 2012-04-02 15:44:00

+0

轉換分支前'git status'輸出是什麼?它是否顯示對子模塊的任何修改? (也可以嘗試'git status -s') – knittl 2012-04-02 15:45:37

回答

3

修復分支有子模塊v3.0;主分支具有子模塊v2.0。切換回主分支後,子模塊保持爲v3.0,因此'git status'顯示子模塊更改。當您切換分支時,您需要執行'git子模塊更新' - 這會將子模塊恢復到v2.0(主版本)。