Das liegt daran, dass Git-Datensätze, die festgeschrieben werden (kein Zweig oder Tag, genau ein Festschreiben, das in SHA-1-Hash dargestellt wird), für jedes Submodul ausgecheckt werden sollten. Wenn Sie etwas in Submodul-Verzeichnis ändern, erkennt Git es und fordert Sie auf, diese Änderungen im Repository der obersten Ebene festzuschreiben.
Führen Sie git diff
das Repository der obersten Ebene aus, um zu zeigen, was Git tatsächlich denkt. Wenn Sie in Ihrem Submodul bereits einige Commits vorgenommen haben (also im Submodul "bereinigen"), wird die Hash-Änderung des Submoduls gemeldet.
$ 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
Andernfalls wird eine -dirty
Hash-Änderung angezeigt, die Sie im Repository der obersten Ebene nicht bereitstellen oder festschreiben können. git status
Das Claims-Submodul hat auch nicht verfolgten / geänderten Inhalt.
$ 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")
Um zu aktualisieren, welche Festschreibungsdatensätze für das Submodul ausgecheckt werden sollen, müssen Sie zusätzlich zum Festschreiben der Änderungen im Submodul das Submodul festschreiben:
git add src/repo
wiki
als Submodul in ein Verzeichnis- Wiki aufgenommen . Ich möchte nicht, dass meine Änderungen aus demwiki
(dh dem Wiki- Verzeichnis) in meinem Haupt- / Code-Repository übernommen werden. Sollte ich nur den.gitmodules
Pfad in meinem.gitignore
Haupt-Repository hinzufügen ? Wie soll ich vorgehen?git submodule update src/repo
Ich bin gerade auf dieselbe Problemklasse gestoßen und konnte die von @AugustinAmenabar im Kommentarbereich der akzeptierten Antwort angebotene Lösung verwenden . Mein Setup war etwas komplexer, daher habe ich das
--recursive
Flag hinzugefügt , um alle Abhängigkeiten auf den neuesten Stand zu bringen.git submodule update src/repo --recursive
quelle