Jest tak, ponieważ rekordy Git, które zatwierdzają (nie gałąź ani znacznik, dokładnie jeden zatwierdzony reprezentowany w skrócie SHA-1) powinny zostać sprawdzone dla każdego podmodułu. Jeśli zmienisz coś w reżimie podmodułu, Git to wykryje i zachęci do zatwierdzenia tych zmian w repozytorium najwyższego poziomu.
Uruchom git diff
w repozytorium najwyższego poziomu, aby pokazać, co tak naprawdę zmieniło myśli Git. Jeśli już dokonałeś zatwierdzeń w swoim podmodule (a więc „wyczyść” w podmodule), zgłasza zmianę skrótu podmodułu.
$ git diff
diff --git a/src/repo b/src/repo
index b0c86e2..a893d84 160000
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit a893d84d323cf411eadf19569d90779610b10280
W przeciwnym razie pokazuje -dirty
zmianę skrótu, której nie można wprowadzić ani zatwierdzić w repozytorium najwyższego poziomu. git status
twierdzi również, że podmoduł ma nieśledzoną / zmodyfikowaną zawartość.
$ git diff
diff --git a/src/repo b/src/repo
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea-dirty
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: src/repo (untracked content)
no changes added to commit (use "git add" and/or "git commit -a")
Aby zaktualizować, które rekordy zatwierdzania powinny zostać sprawdzone dla podmodułu, oprócz zatwierdzenia zmian w podmodule należy dodatkowo zatwierdzić submoduł:
git add src/repo
wiki
jako podmoduł w katalogu wiki . Nie chcę, aby jakiekolwiek moje zmiany zwiki
(tj. Katalogu wiki ) znalazły odzwierciedlenie w moim głównym repozytorium / code. Czy powinienem po prostu dodać.gitmodules
ścieżkę do mojego.gitignore
głównego repozytorium? Jak mam to zrobić?git submodule update src/repo
Właśnie natrafiłem na tę samą klasę problemu i mogłem skorzystać z rozwiązania oferowanego przez @AugustinAmenabar w sekcji komentarzy w zaakceptowanej odpowiedzi. Moja konfiguracja była nieco bardziej złożona, więc dodałem
--recursive
flagę, aby zaktualizować wszystkie zależności.git submodule update src/repo --recursive
źródło