196 votes

comment supprimer les fichiers non suivis dans Git ?

Je travaille sur une branche, disons "expérimentale", que je sépare de ma branche principale, puis je génère un modèle d'utilisateur dans la branche expérimentale, mais il n'est pas encore ajouté à l'index.

Que dois-je faire si je veux supprimer toutes les modifications des fichiers récemment ajoutés dans ma branche expérimentale ? Les fichiers non suivis sont listés comme ci-dessous :

$ git status
 On branch new_chick
 Untracked files:
   (use "git add <file>..." to include in what will be committed)

       .project
       app/models/user.rb
       db/migrate/
       test/fixtures/users.yml
       test/unit/user_test.rb

J'ai essayé d'exécuter "git reset --hard" dans l'espoir d'annuler tous ces changements, mais tous les fichiers ci-dessus sont toujours affichés.

Quelqu'un peut-il m'éclairer ?

2 votes

379voto

manojlds Points 96599

Pour supprimer les fichiers / répertoires non suivis, procédez comme suit :

git clean -fdx

-f - force

-d - répertoires aussi

-x - supprime aussi les fichiers ignorés ( n'utilisez pas cette option si vous ne voulez pas supprimer les fichiers ignorés)


A utiliser avec précaution !
Ces commandes peuvent supprimer définitivement des fichiers arbitraires, auxquels vous n'aviez pas pensé au départ. Veuillez vérifier et lire tous les commentaires sous cette réponse et la section --help, etc., afin de connaître tous les détails pour affiner vos commandes et obtenir le résultat escompté.

104 votes

Ajoutez -n à la prévisualisation pour ne pas supprimer accidentellement des éléments.

12 votes

C'est génial ! Sauf que cela supprimera également les fichiers de configuration que vous avez peut-être intentionnellement ignorés dans .gitignore mais dont vous avez encore besoin pour votre environnement de développement local. Vous pouvez utiliser la même commande avec l'ajout de -i pour le mode interactif comme suit : git clean -fdxi et il vous demandera quels fichiers vous voulez supprimer.

7 votes

C'est génial, mais vous pourriez ajouter un avis aux utilisateurs pour qu'ils UTILISENT -x AVEC PRUDENCE car cela supprimera définitivement les fichiers. Ou utilisez avec -n comme mentionné par @Druska

46voto

bit_cracker007 Points 750

Approche interactive de l'utilisateur :

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i pour interactif
-f pour force
-d pour le répertoire
-x pour les fichiers ignorés (à ajouter si nécessaire)

Nota: Ajouter -n o -- à sec pour vérifier ce qu'il va faire.

25voto

Sonu Mishra Points 141

Pour supprimer les fichiers non suivis :

git clean -f

Pour supprimer également les répertoires non suivis, utilisez :

git clean -f -d

Pour prévenir tout arrêt cardiaque, utilisez

git clean -n -f -d

19voto

Kevin Ballard Points 88866

Ce sont des fichiers non tracés. Cela signifie que git ne les suit pas. Il les liste seulement parce qu'ils ne sont pas dans le fichier ignore de git. Puisqu'ils ne sont pas suivis par git, git reset ne les touchera pas.

Si vous voulez supprimer tous les fichiers non suivis, la méthode la plus simple est la suivante git clean -f (utiliser git clean -n à la place si vous voulez voir ce qu'il détruirait sans réellement effacer quoi que ce soit). Sinon, vous pouvez simplement supprimer les fichiers que vous ne voulez pas à la main.

9voto

Tomasz Nazarenko Points 327

Vous pouvez également revenir à l'état précédent du repo local d'une autre manière :

  1. Ajouter les fichiers non suivis à la zone de transit avec git add .
  2. revenir à l'état précédent du repo local avec git reset --hard .

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