178 votes

Comment se débarrasser du statut non suivi des sous-modules Git ?

Je ne parviens pas à me débarrasser du contenu non suivi dans les sous-modules de Git. Lorsque je lance git status, j'obtiens :

\# Sur la branche master
# Modifications qui ne seront pas validées :
#   (utilisez "git add ..." pour mettre à jour ce qui sera validé)
#   (utilisez "git checkout -- ..." pour annuler les modifications dans le répertoire de travail)
#   (validez ou annulez le contenu non suivi ou modifié dans les sous-modules)
#
#    modifié :   bundle/snipmate (contenu non suivi)
#    modifié :   bundle/surround (contenu non suivi)
#    modifié :   bundle/trailing-whitespace (contenu non suivi)
#    modifié :   bundle/zencoding (contenu non suivi)
#
Aucune modification n'a été ajoutée pour le commit (utilisez "git add" et/ou "git commit -a")

Ajouter le paramètre --ignore-submodules permet de masquer ces messages. Cependant, je me demande s'il existe un moyen de se débarrasser de cette saleté de manière plus appropriée, plus conforme au fonctionnement de base de Git.

3 votes

Cette réponse: stackoverflow.com/a/5127213/199649 évoque plus d'options.

0 votes

2voto

mu 無 Points 8980

Je suis resté bloqué sur ce problème hier, dans un projet qui avait près de 12 sous-modules.

git status affichait une sortie.

# Sur la branche master
# Modifications non validées pour le commit:
#   (utilisez "git add ..." pour mettre à jour ce qui sera validé)
#   (utilisez "git checkout -- ..." pour annuler les modifications dans le répertoire de travail)
#   (valider ou annuler le contenu non suivi ou modifié des sous-modules)
#
#   modifié:   proj1 (contenu non suivi)
#   modifié:   proj1 (contenu modifié, contenu non suivi)
#   ...

Pour résoudre l'erreur de contenu non suivi, j'ai dû supprimer les fichiers non suivis de tous les sous-modules (tous étaient des fichiers *.pyc, *.pyo générés par python) en utilisant un .gitignore.

Pour résoudre l'autre, j'ai dû exécuter git submodule update qui a mis à jour chacun des sous-modules.

1voto

HappyCoder Points 114

Dans ma situation, je clone des modules comme point de départ pour un nouveau module dans mon environnement ZF2. Ce qui arrive, c'est qu'il place son propre dossier .git dans le répertoire.

La solution dans ce cas est de supprimer le dossier .git (vous devrez probablement afficher les fichiers cachés pour le voir).

1voto

Cela se produit probablement lorsque vous avez un autre dossier .git [caché] à l'intérieur du dossier particulier.

modifié : ./../.. (contenu modifié, contenu non suivi)

assurez-vous que votre sous-répertoire ne contient pas ce dossier .git.

Si c'est le cas, le problème peut être résolu en supprimant le dossier .git manuellement du sous-répertoire.

1voto

Glenn Lawrence Points 376

Je préfère utiliser SourceTree, donc la solution pour moi a été d'ouvrir le dépôt du sous-module dans SourceTree qui me montre la liste de tous les fichiers non suivis. J'ai ensuite regroupé les fichiers sélectionnés puis j'ai utilisé "Supprimer".

J'ai pu le faire parce que je savais que tous les fichiers non suivis n'étaient pas réellement nécessaires.

0voto

daigo Points 7

Si c'est un problème temporaire, vous pouvez entrer dans le dossier du sous-module et exécuter git reset HEAD --hard mais vous perdrez toutes vos modifications à l'intérieur du sous-module.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X