it-swarm.com.de

git submodule modifizierte datei status

Ich habe ein Submodul in meinem Hauptordner-Ordnerbaum hinzugefügt und nichts geändert, aber es wird geändert angezeigt. Was mache ich dagegen?

$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   example.com/soundmanager
#
no changes added to commit (use "git add" and/or "git commit -a")

Ich habe ein git Submodul-Update ausprobiert, aber es tut nichts.

42
Poe

Die Art und Weise, in der der Status von Git-Submodulen gemeldet wird, hat sich im Vergleich zu den letzten Versionen von Git sehr stark geändert. Daher sollten Sie die Ausgabe von git --version wirklich einbeziehen, damit wir genau helfen können.

In jedem Fall sollte Ihnen die Ausgabe von git diff example.com/soundmanager jedoch mehr verraten. Wenn Sie die Ausgabe mit demselben Commit-Namen sehen, der jedoch der neuen Version -dirty hinzugefügt wurde, z.

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

... dann bedeutet das, dass git status im Submodul nicht sauber ist - versuchen Sie cd example.com/soundmanager und dann git status, um zu sehen, was los ist.

Auf der anderen Seite, wenn Sie verschiedene Commit-Versionen sehen, z.

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

Dies bedeutet, dass die Version, in der sich Ihr Submodul befindet (d. h., was Sie von cd example.com/soundmanager && git show HEAD sehen), sich von der im Hauptprojektbaum festgeschriebenen Version unterscheidet (d. h., was Sie von git rev-parse HEAD:example.com/soundmanager sehen). Wenn ersteres richtig ist, sollten Sie die neue Version des Submoduls in Ihrem Hauptprojekt hinzufügen und festschreiben.

git add example.com/soundmanager
git commit -m "Update the soundmanager submodule"

Wenn letzteres jedoch das ist, was Sie möchten, können Sie die Version ändern, in der sich das Submodul befindet:

git submodule update example.com/soundmanager
67
Mark Longair

Ich kam in diesen Zustand, indem ich versehentlich ein Submodul hinzufügte, indem ich gezielt ein Verzeichnis hinzufügte, anstatt nur den Inhalt eines neuen Verzeichnisses hinzuzufügen.

Ich brauchte nur das Submodul so zu entfernen:

git rm --cached path/to/my/new_directory

Und füge dann den Inhalt so hinzu, wie ich es ursprünglich geplant hatte:

git add path/to/my/new_directory/*
5
awe

Ich habe den Befehl follow git verwendet und dieses Problem behoben:

git submodule update --init  --recursive
0
blacet wang