web-dev-qa-db-fra.com

statut des fichiers modifiés par le sous-module git

J'ai ajouté un sous-module dans l'arborescence principale de mon dossier git et je n'ai rien changé, mais l'affichage a été modifié. Qu'est-ce que je fais à ce sujet?

$ 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")

J'ai essayé une mise à jour de sous-module Git, mais cela ne fait rien.

42
Poe

La manière dont l'état des sous-modules git est signalé a beaucoup changé par rapport aux versions récentes de git. Vous devez donc vraiment inclure le résultat de git --version afin que nous puissions vous aider avec précision.

Cependant, dans tous les cas, le résultat de git diff example.com/soundmanager devrait vous en dire plus. Si vous voyez une sortie avec le même nom de validation, mais avec -dirty ajouté à la nouvelle version, par exemple:

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

... que cela signifie que git status dans le sous-module n'est pas propre - essayez cd example.com/soundmanager et ensuite git status pour voir ce qui se passe.

Par contre, si vous voyez différentes versions de commit, par exemple:

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

... cela signifie que la version de votre sous-module (c'est-à-dire ce que vous voyez de cd example.com/soundmanager && git show HEAD) est différente de la version validée dans l'arbre du projet principal (c'est-à-dire ce que vous voyez de git rev-parse HEAD:example.com/soundmanager). Si le premier est correct, vous devez ajouter et valider la nouvelle version du sous-module dans votre projet principal, avec quelque chose comme:

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

Par contre, si ce dernier est ce que vous voulez, vous pouvez changer la version à laquelle se trouve le sous-module:

git submodule update example.com/soundmanager
67
Mark Longair

Je me suis retrouvé dans cet état en ajoutant par erreur un sous-module en ajoutant spécifiquement un répertoire au lieu d'ajouter simplement le contenu d'un nouveau répertoire.

J'avais juste besoin de supprimer le sous-module comme ceci:

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

Et puis ajoutez le contenu comme je le souhaitais en premier lieu:

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

J'ai utilisé la commande suivante de git et résoudre ce problème:

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