Comment supprimer des fichiers locaux (non suivis) de l’arbre de travail Git actuel?

Comment supprimer les fichiers locaux inutiles de l’arbre de travail actuel?

6113
14 сент. Lecture seule 14 septembre 2008-09-14 12:06 2008 à 12h06 2008-09-14 12h06
@ 36 réponses
  • 1
  • 2

Selon la documentation de git clean

Supprimer les fichiers inutiles de l'arbre de travail


Étape 1 - affichez ce qui sera supprimé avec le paramètre -n :

 git clean -n 

Étape de nettoyage - Attention: cela supprimera les fichiers :

 git clean -f 
  • Pour supprimer des répertoires, lancez git clean -f -d ou git clean -fd
  • Pour supprimer les fichiers ignorés, lancez git clean -f -X ou git clean -fX
  • Pour supprimer les fichiers ignorés et non ignorés, exécutez git clean -f -X ou git clean -fX

Notez la différence dans les événements sur X pour les deux dernières équipes.

Si clean.requireForce défini sur "true" (valeur par défaut) dans votre configuration, vous devez spécifier -f , sinon rien ne se passera.

Consultez à nouveau la documentation de git-clean pour plus d'informations.

Fonctions

-f

- force

Si la variable de configuration Git clean.requireForce n'est pas définie sur false, Git clean refusera de démarrer sauf si -f, -n ou -i est spécifié.

-x

N'utilisez pas les règles ignorées standard lues à partir de .gitignore (pour chaque répertoire) et $ GIT_DIR / info / exclude, mais utilisez quand même les règles ignorées spécifiées avec les options -e. Cela vous permet de supprimer tous les fichiers non traités, y compris l'assemblage de produits. Ceci peut être utilisé (éventuellement conjointement avec Git reset) pour créer un répertoire de travail intact permettant de vérifier si la construction est propre.

-X

Ne supprimer que les fichiers ignorés par Git. Cela peut être utile pour tout récupérer à partir de zéro, mais en enregistrant des fichiers créés manuellement.

-n

- sec

En fait, ne supprimez rien, montrez simplement ce qui sera fait.

-d

Supprimez les répertoires inutiles en plus des fichiers bruts. Si un répertoire non signé est géré par un autre référentiel Git, il n'est pas supprimé par défaut. Utilisez l'option -f à deux reprises si vous souhaitez réellement supprimer un tel répertoire.

7973
15 сент. Réponse donnée par Andreas Ericsson 15 sept. 2008-09-15 20:32 08 à 20h32 2008-09-15 20:32

Utilisez git clean -f -d pour vous assurer que les répertoires sont également supprimés.

border=0

Ensuite, vous pouvez vérifier si vos fichiers sont vraiment passés au git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 la réponse est donnée par robert.berger le 26 mai 09 à 23:59 2009-05-26 23:59

Je suis surpris que personne n'ait mentionné cela auparavant:

 git clean -i 

Cela signifie interactivité et vous obtenez un bref aperçu de ce qui sera supprimé, vous offrant la possibilité d'inclure / exclure les fichiers affectés. En général, il est toujours plus rapide que d’exécuter l’ --dry-run avant un véritable nettoyage.

Vous devrez jeter -d si vous souhaitez également vous occuper des dossiers vides. Au final, il fait un bon pseudonyme:

 git iclean 

Ainsi, la mise en œuvre manuelle supplémentaire de commandes interactives peut fatiguer les utilisateurs avancés. Ces jours-ci, je viens d'utiliser le git clean -fd déjà mentionné

427
30 дек. La réponse est donnée par SystematicFrank le 30 décembre. 2013-12-30 23:12 14 à 11:12 2013-12-30 23:12
388
14 сент. Réponse donnée par Fire Lancer 14 sept. 2008-09-14 12:09 '08 à 12:09 2008-09-14 12:09

Si le répertoire untracked est votre propre référentiel git (par exemple, un sous-module), vous devez utiliser deux fois -f :

git clean -d -f -f

213
25 янв. Réponse donnée par Michał Szajbe le 25 janvier 2013-01-25 15:24 13 à 15:24 2013-01-25 15:24

Un moyen facile de supprimer les fichiers non suivis

Pour supprimer tous les fichiers non suivis, la méthode la plus simple consiste à tous les ajouter et à réinitialiser le référentiel, comme indiqué ci-dessous.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 La réponse est donnée par Thanga le 03 juin 16 à 15:16 2016-06-03 15:16

J'aime git stash push -u car vous pouvez tous les annuler avec git stash pop .

EDIT: j'ai également trouvé un moyen d'afficher un fichier introuvable dans le cache (par exemple, git show stash@{0}^3 ) recomed.site.site/questions/507 / ...

EDIT2: la git stash save est déconseillée au profit de push . Merci @ script loup.

121
11 янв. Hiroshi a répondu le 11 janvier 2014-01-11 03:41 '14 à 3:41 2014-01-11 03:41

C'est ce que j'utilise toujours:

 git clean -fdx 

Pour un très grand projet, vous pouvez l'exécuter plusieurs fois.

98
25 нояб. la réponse est donnée par Oscar Fraxedas le 25 novembre 2013-11-25 17:16 13 à 17:16 2013-11-25 17:16

Git-Clean est ce que vous recherchez. Il est utilisé pour supprimer les fichiers non traités de l’arbre de travail.

83
14 сент. La réponse est donnée à Espo le 14 septembre. 2008-09-14 12:08 '08 à 12:08 2008-09-14 12:08

Si vous souhaitez supprimer les fichiers non signés d'un sous-répertoire spécifique,

 git clean -f {dir_path} 

Et un moyen combiné pour supprimer les fichiers / fichiers non reproductibles et les fichiers ignorés.

 git clean -fxd {dir_path} 

après cela, vous ne modifierez que les fichiers en git status .

73
24 сент. La réponse est donnée à Vijay C 24 sep. 2013-09-24 09:28 '13 à 9:28 2013-09-24 09:28

git clean -fd supprime le répertoire

git clean -fX supprime les fichiers ignorés

git clean -fX supprime les git clean -fX ignorés et non ignorés

Vous pouvez utiliser toutes les options ci-dessus en combinaison comme

git clean -fdXx

Consultez le manuel de Git pour plus d'aide.

48
22 янв. La réponse est donnée Pooja 22 janvier 2015-01-22 09:33 '15 à 9:33 2015-01-22 09:33

Supprimer tous les dossiers et fichiers inutiles de ce référentiel + sous-modules

Cela vous amène au même état qu'un clone frais.

 git clean -ffdx 

Supprimez tous les dossiers et fichiers supplémentaires de ce référentiel, mais pas ses sous-modules.

 git clean -fdx 

Supprimer uniquement les dossiers supplémentaires, mais pas les fichiers (par exemple, le dossier de construction)

 git clean -fd 

Supprimer les dossiers inutiles + fichiers manquants (mais pas les nouveaux fichiers)

Si le fichier n'a pas été ignoré et n'a pas encore été enregistré, il reste. Notez la capitale X.

 git clean -fdX 

Nouveau mode interactif

 git clean 
37
12 февр. La réponse est donnée par Shital Shah le 12 février. 2017-02-12 11:33 '17 à 11:33 2017-02-12 11:33

OK, il est facile de supprimer les fichiers et les dossiers inutiles non suivis , en utilisant git sur la ligne de commande, procédez comme suit :

 git clean -fd 

Revérifiez avant de faire ceci, car il supprimera des fichiers et des dossiers sans créer d’historique ...

Dans ce cas également, -f représente la force et -d représente le répertoire ...

Donc, si vous voulez supprimer uniquement les fichiers, vous ne pouvez utiliser que -f :

 git clean -f 

Si vous souhaitez supprimer (répertoires) et des fichiers, vous pouvez supprimer uniquement les répertoires et les fichiers non surveillés, par exemple:

 git clean -fd 

Vous pouvez également utiliser l'indicateur -x pour inclure les fichiers ignorés par git. Cela serait utile si vous voulez tout supprimer.

Et en ajoutant le drapeau -i , git demande l'autorisation de supprimer des fichiers un par un à la volée.

Si vous n'êtes pas sûr et que vous souhaitez tout vérifier en premier, ajoutez l'indicateur -n .

Utilisez -q si vous ne voulez voir aucun rapport après une suppression réussie.

Je crée également une image ci-dessous pour la rendre plus mémorable, en particulier j’ai vu combien de personnes confondent -f avec le nettoyage d’un dossier ou confondent-le!


2019

Meilleur utilisé: git clean

 git clean -d -x -f 

Cela supprime les fichiers inutiles, y compris les répertoires (-d) et les fichiers ignorés par git (-x) .

Remplacez également l'argument -f par -n pour exécuter le mode interactif ou -i , et il vous indiquera ce qui sera supprimé.

32
16 апр. La réponse est donnée à Chhabilal le 16 avril . 2015-04-16 09:49 '15 à 9:49 2015-04-16 09:49

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/arsdumpgenerator/inspector/ [y/N]? y Remove src/com/arsdumpgenerator/manifest/ [y/N]? y Remove src/com/arsdumpgenerator/s3/ [y/N]? y Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y Remove tst/com/arsdumpgenerator/s3/ [y/N]? y 

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

Remarque: Ajoutez -n ou - dry pour vérifier ce qu’il va faire.

20
02 марта '17 в 23:09 2017-03-02 23:09 la réponse est donnée bit_cracker007 02 mars 17 à 23:09 2017-03-02 23:09

Pour moi, seulement après le travail:

 git clean -ffdx 

Dans tous les autres cas, j'ai reçu le message "Répertoire ignoré" pour certains sous-répertoires.

15
16 авг. la réponse est donnée rahul286 16 août. 2016-08-16 18:29 16h à 18h29 2016-08-16 18:29

git clean -f -d -x $(git rev-parse --show-cdup) est utilisé uniquement pour le répertoire racine, où que vous l' git clean -f -d -x $(git rev-parse --show-cdup) dans l'arborescence du référentiel. Je l'utilise tout le temps, car cela ne vous oblige pas à quitter le dossier dans lequel vous travaillez actuellement, et vous permet d'effacer et de corriger le droit depuis l'endroit où vous vous trouvez.

Assurez-vous que les indicateurs -f , -d , -x correspondent à vos besoins:

 -d Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. -f, --force If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given. This affects also git submodules where the storage area of the removed submodule under .git/modules/ is not removed until -f is given twice. -x Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build. 

Il y a d'autres drapeaux, choisissez simplement git clean --help .

15
02 дек. La réponse est donnée par Nikita Leonov le 02 décembre 2015-12-02 20:57 '15 à 20:57 2015-12-02 20:57

Si vous voulez juste supprimer les fichiers listés comme non cochés par "statut git"

 git stash save -u git stash drop "stash@{0}" 

Je préfère ce "git clean", car "git clean" supprimera les fichiers ignorés par git, votre prochaine construction devra donc tout reconstruire et vous risquez également de perdre les paramètres de l'EDI.

13
02 марта '16 в 5:09 2016-03-02 05:09 la réponse est donnée jazzdev le 02 mars '16 à 5:09 2016-03-02 05:09

Viabilité pour une telle situation, je viens d’inventer et d’essayer (ce qui fonctionne très bien):

 git add . git reset --hard HEAD 
Attention Veillez à copier toutes les modifications nécessaires (même sur des fichiers peu sincères) avant de le faire .
13
21 февр. la réponse est donnée à thybzi le 21 février 2016-02-21 20:29 16h à 20h29 . 2016-02-21 20:29

Pour savoir ce qui sera supprimé avant la suppression effective:

git clean -d -n

Cela produira quelque chose comme:

Supprime sample.txt

Pour supprimer tout ce qui est répertorié dans le résultat de la commande précédente:

git clean -d -f

Cela produira quelque chose comme:

Désinstallez sample.txt

10
16 февр. La réponse est donnée par Omar Mowafi le 16 février. 2016-02-16 11:42 '16 à 11:42 2016-02-16 11:42

Pour supprimer les fichiers inutilisés, vous devez d’abord utiliser la commande pour afficher les fichiers qui seront affectés par le nettoyage.

 git clean -fdn 

Cela vous montrera la liste des fichiers à supprimer. Maintenant, pour réellement supprimer ces fichiers, utilisez la commande suivante:

 git clean -fd 
8
25 окт. réponse donnée par Gaurav le 25 octobre. 2016-10-25 12:09 '16 à 12h09 2016-10-25 12h09

Quelqu'un devrait vraiment mentionner:

 git clean [<options>] 

Ai-je raison

7
27 авг. réponse donnée par joeytwiddle le 27 août 2015-08-27 13:18 '15 à 13h18 2015-08-27 13:18

Soyez prudent lorsque vous exécutez la commande `git clean`.

Utilisez toujours -n avant d'exécuter la commande réelle, indiquant quels fichiers seront supprimés.

 git clean -n -d git clean -f -d 

Par défaut, git clean ne supprimera que les fichiers inutilisés qui ne sont pas ignorés. Tout fichier correspondant au modèle de votre fichier .gitignore ou d’autres fichiers à ignorer ne sera pas supprimé. Si vous souhaitez également supprimer ces fichiers, vous pouvez ajouter la commande -x à une commande en mode minimal.

 git clean -f -d -x 

Il existe également un mode interactif -i avec une commande de nettoyage.

 git clean -x -i 

Alternativement

Si vous n'êtes pas sûr à 100% que la suppression de votre travail non terminé est sans danger, vous pouvez utiliser la sauvegarde.

 git stash --all 

Cela effacera également votre répertoire, mais vous donnera la possibilité d'extraire des fichiers à tout moment en utilisant stash avec apply ou pop . Ensuite, vous pourrez effacer votre cache ultérieurement en utilisant:

 git stash drop // or clean 
6
22 окт. Répondre DevWL 22 oct. 2017-10-22 00:44 '17 à 0:44 2017-10-22 00:44

git clean -f to remove untracked files from working directory.

J'ai couvert certaines des bases ici sur mon blog, les commandes git-intro-basic

5
16 февр. la réponse est donnée ysk 16 fév . 2017-02-16 12:05 '17 à 12:05 2017-02-16 12:05

Nous pouvons facilement supprimer les fichiers locaux non suivis de l’arbre de travail actuel de git en utilisant les commentaires de git ci-dessous.

 git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] 

Exemple:

 git reset --hard HEAD 

Références:

  1. https://git-scm.com/docs/git-reset
  2. Comment utiliser 'git reset --hard HEAD' pour revenir au commit précédent?
  3. Réinitialisez la branche du référentiel local afin qu'elle ressemble à celle du référentiel distant HEAD.
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
5

Commande ued Supprimer les fichiers bruts de git docs git clean

git clean - supprime les fichiers cassés de l'arbre de travail

Méthode suggérée: Mode d'interaction avec git clean -i pour pouvoir le contrôler. regardez les options disponibles restantes.

Options disponibles:

 git clean -d -f -i -n -q -e -x -X (can use either) 

Explication:

1. -d

Supprimez les répertoires inutiles en plus des fichiers bruts. Si un répertoire non signé est géré par un autre référentiel git, il n'est pas supprimé par défaut. Utilisez l'option -f à deux reprises si vous souhaitez réellement supprimer un tel répertoire.

2. -f, --force

Si la variable de configuration git clean.requireForce n'est pas définie sur false, git clean refusera de démarrer sauf si -f, -n ou -i est spécifié.

3. -i, --interactive

Montrez ce qui va être fait et effacez les fichiers en ligne. Pour plus de détails, voir "Mode interactif".

4. -n, --dry-run

En fait, ne supprimez rien, montrez simplement ce qui sera fait.

5. -q, --quiet

Soyez calme, signalez simplement les erreurs, mais ne supprimez pas les fichiers.

6. -e, --exclude =

En plus de ceux trouvés dans .gitignore (pour chaque répertoire) et $ GIT_DIR / info / exclude, prenez également en compte ces modèles dans l'ensemble des règles ignorées valides.

7. -x

N'utilisez pas les règles ignorées standard lues à partir de .gitignore (pour chaque répertoire) et $ GIT_DIR / info / exclude, mais utilisez quand même les règles ignorées spécifiées avec les options -e. Cela vous permet de supprimer tous les fichiers non traités, y compris l'assemblage de produits. Cela peut être utilisé (éventuellement en conjonction avec git reset) pour créer un répertoire de travail intact afin de vérifier si la construction est propre.

8. -X

Ne supprimer que les fichiers ignorés par Git. Cela peut être utile pour tout récupérer à partir de zéro, mais en enregistrant des fichiers créés manuellement.

01 сент. Réponse donnée par Mohideen ibn Mohammed le 01 Sep 2017-09-01 09:23 '17 à 09h23 du 2017-09-01 09:23

La commande habituelle git clean ne supprime pas les fichiers inutilisés avec git version 2.9.0.windows.1 .

 $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! 
5
11 окт. la réponse est donnée kujiy 11 oct. 2016-10-11 03:14 '16 à 3:14 2016-10-11 03:14

Efface le référentiel git et tous les sous-modules de manière récursive

La commande suivante efface de manière récursive le référentiel git actuel et tous ses sous-modules:

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. la réponse est donnée à Sergey 25 sep. 2017-09-25 19:25 17h à 19h25 2017-09-25 19h25

oh-my-zsh avec zsh fournit ces excellents alias via le plugin git. Ils peuvent aussi être utilisés en bash.

gclean='git clean -fd'
gpristine='git reset --hard git clean -dfx'

  • gclean supprime les répertoires introuvables, en plus des fichiers non suivis.
  • gpristine les modifications locales, supprime les répertoires non suivis, les fichiers non suivis et n'utilise pas les règles ignorées standard lues dans .gitignore (pour chaque répertoire) et $ GIT_DIR / info / exclude, mais utilise toujours les règles ignorées définies avec l'option -e. Cela vous permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Ceci peut être utilisé (éventuellement en combinaison avec git reset) pour créer le répertoire de travail principal afin de tester une construction propre.
3
02 нояб. La réponse est donnée à ZenLulz le 02 novembre. 2017-11-02 11:24 '17 à 11:24 2017-11-02 11:24
 git clean -f 

supprimera les fichiers non suivis de git actuel

 git clean -fd 

lorsque vous souhaitez supprimer des répertoires et des fichiers, seuls les répertoires et les fichiers non suivis seront supprimés.

1
18 мая '18 в 9:04 2018-05-18 09:04 la réponse est donnée par sudhir Vishwakarma le 18 mai '18 à 9:04 2018-05-18 09:04
  • 1
  • 2

Autres questions sur ou Poser une question