web-dev-qa-db-fra.com

Comment préserver tous les fichiers ignorés dans git clean -fd?

Lorsque j'ai .gitignore data/* et que je lance git clean -fd, le dossier de données et tous ses fichiers de contenu sont supprimés.

Ce que je veux, c’est de supprimer tous les fichiers non envisagés d’un référentiel git tout en excluant tous les fichiers ignorés (c’est-à-dire, ne supprimez pas les fichiers gitignored). "Que pouvais-je faire?"

35
Danny Lin

Normalement, Git ne nettoie pas les fichiers ignorés sauf si l'indicateur -x est spécifié, mais étrangement, il nettoie lorsqu'il est configuré comme vous le faites (folder/*).

Comme l'a souligné @VonC, vous devez modifier votre fichier .gitignore- pour ignorer le répertoire (data/) plutôt que son contenu (data/*).

C'est une différence subtile, mais il est important de cracher.

42
talles

J'ai trouvé plus de détails. Ayant /tmp/* dans gitignore, git clean -fd le supprimera. Comme cela a été dit dans d'autres réponses, cela ne se produit pas avec /tmp/ dans gitignore.

Mais une fois que vous avez n'importe quel fichier archivé dans ce répertoire, git clean -fd ignorera ce chemin. Ceci peut être réalisé avec git add -f ou en ajoutant !/tmp/.keep à gitignore et en archivant ce fichier.

0
prcu