Je n'arrive pas à me débarrasser du contenu non suivi dans les sous-modules de Git. Fonctionnementgit status
des rendements:
# Sur le maître de succursale # Modifications non préparées pour la validation: # (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 supprimer 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) # aucun changement ajouté au commit (utilisez "git add" et / ou "git commit -a")
L'ajout du --ignore-submodules
paramètre masque ces messages; mais je me demande s'il existe un moyen de se débarrasser de cette saleté d'une manière plus appropriée et plus efficace.
git
git-submodules
Tomer Lichtash
la source
la source
Réponses:
Étant donné que l'état de git signale du contenu non suivi, le moyen réel d'avoir un statut propre serait d'aller dans chacun de ces sous-modules et:
.gitignore
spécifique à chaque module..git/info/exclude
, comme le rapporte peci1 dans les commentaires .ou ajouter sale à la spécification sous - module, comme mentionné dans ezraspectre de réponse (upvoted).
ou ajoutez un fichier global
.gitignore
(souvent~/.gitignore-global
). Comme par exemple.DS_Store
ou dans mon casCarthage/Build
tel que rapporté par Marián Černý dans les commentaires . Voir la.gitginore
page de manuel :la source
.DS_Store
fichier avait été créé automatiquement (par OS X) dans l'un de mes sous-modules, m'empêchant de valider le projet principal. Arg! Il est temps de mettre à jour.gitignore
....git/info/exclude
et ajoutez-y les lignes ignorées (cela fonctionne comme un .gitignore, mais ne fait pas partie du référentiel partagé).J'ai trouvé que cet article de blog fonctionnait globalement. En ajoutant l'
ignore = dirty
option à chacune des entrées du.gitmodules
fichier.la source
ignore = untracked
existe également et montre les fichiers suivis modifiés, mais pas les fichiers non suivis. Ce serait bien s'il y avait un paramètre global pour cela pour tous les sous-modules ...Vous pouvez également accéder à chaque répertoire de sous-module et agir comme un git séparé. Par exemple:
... / récupère la liste des fichiers modifiés /
vous pouvez également mettre à jour votre repo de sous-modules distants avec
après tout
la source
git add .
sans examiner les fichiers modifiés. La plupart du temps, les modifications apportées sont les.DS_Store
fichiers ajoutés - cela devrait probablement être capturé par votre.gitignore
, comme Zourtney l'a mentionné dans le premier commentaire de la réponse.git submodule update --force
.Cela peut être dû à la
detached HEAD
branche dans votre sous-module. Si tel est le cas, allez dans le chemin de votre sous-module (par exemple:)./bundle/snipmate
, puis exécutezgit checkout master
.la source
Cela a très bien fonctionné pour moi:
Si cela ne fonctionne pas avec le
pathname
, essayez le nom du fichier. Faites-moi savoir si cela a fonctionné pour vous aussi.la source
Je suis resté coincé sur cette question hier, dans un projet qui comportait près de 12 sous-modules.
git status
montrait la sortie.Pour résoudre l'erreur de contenu untracked, je devais supprimer les fichiers non suivis de tous les sous - modules (tous étaient
*.pyc
, les*.pyo
fichiers générés par python) en utilisant un.gitignore
.Pour résoudre l'autre, j'ai dû exécuter
git submodule update
qui mettait à jour chacun des sous-modules.la source
Dans ma situation, je clone des modules comme point de départ pour un nouveau module dans mon environnement ZF2. Ce que cela fait, c'est mettre 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 visualiser).
la source
Cela se produit probablement lorsque vous avez un autre .git [dossier caché] dans le dossier particulier.
modifié: ./../ .. (contenu modifié, contenu non suivi)
assurez-vous que votre sous-répertoire ne contient pas ce dossier .git.
Si tel est le cas, le problème peut être résolu en supprimant manuellement le dossier .git du sous-répertoire.
la source
Je préfère utiliser SourceTree , donc la solution pour moi était d'ouvrir le dépôt de sous-modules dans SourceTree qui me montre la liste de tous les fichiers non suivis. Je les ai ensuite tous sélectionnés par groupe puis j'ai utilisé "Supprimer".
J'ai pu le faire parce que je savais que tous les fichiers non suivis n'étaient pas vraiment nécessaires.
la source
S'il s'agit d'un problème temporaire, vous pouvez aller 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.la source