git子模塊的狀態報告的方式在最近版本的git上已經發生了很大的變化,所以您應該真的包含git --version
的輸出,以便我們能夠準確地幫助您。
但是,在任何情況下,git diff example.com/soundmanager
的輸出應該告訴你更多。如果你看到的輸出與同犯的名字,但-dirty
添加到新的版本,例如:
diff --git a/example.com/soundmanager b/example.com/soundmanager
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7
+Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7-dirty
...比這意味着git status
輔助模塊不乾淨 - 嘗試cd example.com/soundmanager
,然後git status
到看看發生了什麼。
在另一方面,如果你看到不同的提交的版本,例如:
diff --git a/example.com/soundmanager b/example.com/soundmanager
index c4478af..c79d9c8 160000
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c4478af032e604bed605e82d04a248d75fa513f7
+Subproject commit c79d9c83c2864665ca3fd0b11e20a53716d0cbb0
...這意味着該版本,你的子模塊的(即你從cd example.com/soundmanager && git show HEAD
看到)從不同版本在主項目樹中提交(即你從git rev-parse HEAD:example.com/soundmanager
看到的內容)。如果是前者是正確的,你應該在你的主要項目中添加並提交子模塊的新版本,喜歡的東西:
git add example.com/soundmanager
git commit -m "Update the soundmanager submodule"
在另一方面,如果是後者,你想要什麼,你可以改變版本的子模塊是在用:
git submodule update example.com/soundmanager
我遇到了這個時候我有一個混帳回購協議在一個我不知道的子目錄中,這導致了我無盡的困惑。即使我已經將文件添加到父存儲庫,它仍然將目錄列出爲已修改。感謝這個問題 - 很好地解決了問題! – 2011-09-22 17:37:55