Comment supprimer des fichiers locaux (non suivis) de l’arborescence de travail Git actuelle?

Comment supprimer les fichiers locaux non suivis de votre arborescence de travail actuelle?

Selon la documentation de Git, git clean

Supprimer les fichiers non suivis de l’arborescence de travail


L’étape 1 consiste à montrer ce qui sera supprimé en utilisant l’option -n :

 git clean -n 

Clean Step – 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, lancez git clean -f -x ou git clean -fx

Notez la différence de casse sur le X pour les deux dernières commandes.

Si clean.requireForce est défini sur “true” (valeur par défaut) dans votre configuration, il faut spécifier -f sinon rien ne se produira réellement.

Encore une fois, consultez la documentation de git-clean pour plus d’informations.

Les options

-F

–Obliger

Si la variable de configuration Git clean.requireForce n’est pas définie sur false, git clean refuse de s’exécuter à moins que -f, -n ou -i ne soient donnés.

-X

N’utilisez pas les règles d’ignorance standard lues à partir de .gitignore (par répertoire) et de $ GIT_DIR / info / exclude, mais utilisez toujours les règles ignore avec les options -e. Cela permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Cela peut être utilisé (éventuellement en conjonction avec git reset) pour créer un répertoire de travail vierge pour tester une version propre.

-X

Ne supprimez que les fichiers ignorés par Git. Cela peut être utile pour tout reconstruire à partir de rien, mais conservez les fichiers créés manuellement.

-n

–dry-run

Ne supprimez rien, montrez simplement ce qui serait fait.

-ré

Supprimez les répertoires non suivis en plus des fichiers non suivis. Si un répertoire non suivi est géré par un référentiel Git différent, il n’est pas supprimé par défaut. Utilisez l’option -f deux fois si vous voulez vraiment supprimer un tel répertoire.

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

Vous pouvez alors vérifier si vos fichiers ont réellement disparu avec le git status .

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

 git clean -i 

Cela signifie interactif et vous aurez un aperçu rapide de ce qui va être supprimé, vous offrant la possibilité d’inclure / exclure les fichiers concernés. Globalement, encore plus rapide que d’exécuter le --dry-run obligatoire avant le vrai nettoyage.

Vous devrez lancer un -d si vous voulez également vous occuper de dossiers vides. Au final, ça donne un joli alias:

 git iclean 

Cela étant dit, la tenue de main supplémentaire des commandes interactives peut être fatigante pour les utilisateurs expérimentés. Ces jours-ci, je viens d’utiliser le git clean -fd déjà mentionné

git-clean – Supprime les fichiers non suivis de l’arborescence de travail

Si le répertoire non suivi est un répertoire git (par exemple un sous-module), vous devez utiliser -f deux fois:

git clean -d -f -f

Moyen simple pour supprimer les fichiers non suivis

Pour supprimer tous les fichiers non suivis, la méthode la plus simple consiste à les append en premier et à réinitialiser le repository comme indiqué ci-dessous.

 git add --all git reset --hard HEAD 

J’aime git stash save -u parce que vous pouvez les défaire tous avec git stash pop .

EDIT: J’ai aussi trouvé un moyen de montrer un fichier non suivi dans une réserve (par exemple, git show stash@{0}^3 ) https://stackoverflow.com/a/12681856/338986

C’est ce que j’utilise toujours:

 git clean -fdx 

Pour un très gros projet, vous voudrez peut-être l’exécuter plusieurs fois.

git-clean est ce que vous recherchez. Il est utilisé pour supprimer les fichiers non suivis de l’arborescence de travail.

Si nécessaire pour supprimer les fichiers non suivis du sous-répertoire particulier,

 git clean -f {dir_path} 

Et moyen combiné pour supprimer les fichiers / répertoires non suivis et les fichiers ignorés.

 git clean -fxd {dir_path} 

après cela, vous aurez modifié les fichiers uniquement en git status .

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

peut être utilisé toutes les options ci-dessus en combinaison comme

git clean -fdXx

vérifier le manuel de Git pour plus d’aide

OK, supprimer les fichiers et les dossiers non suivis indésirables est facile en utilisant git dans la ligne de commande, il suffit de faire comme ceci:

 git clean -fd 

Vérifiez avant de le faire car cela supprimera les fichiers et les dossiers sans faire aucun historique …

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

Donc, si vous voulez supprimer uniquement des fichiers, vous pouvez utiliser uniquement -f :

 git clean -f 

Si vous souhaitez supprimer (répertoires) et fichiers, vous ne pouvez supprimer que les répertoires et fichiers non suivis comme ceci:

 git clean -fd 

De plus, vous pouvez utiliser l’ -x pour inclure les fichiers ignorés par git. Cela serait utile si vous voulez tout supprimer.

Et en ajoutant l’ -i , git vous demande la permission de supprimer les fichiers un par un.

Si vous n’êtes pas sûr et que vous voulez vérifier les choses en premier, ajoutez l’ -n .

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

Je crée également l’image ci-dessous pour la rendre plus mémorable, spécialement j’ai vu beaucoup de gens confondre -f pour nettoyer le dossier parfois ou le mélanger en quelque sorte!

la suppression des fichiers et dossiers non suivis indésirables

Une meilleure façon est d’utiliser: git clean

 git clean -d -x -f 

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

Remplacez également l’argument -f par -n pour exécuter une exécution dry-run ou -i pour le mode interactif et il vous indiquera ce qui sera supprimé.

Supprimez tous les dossiers et fichiers supplémentaires dans ces sous-modules repo +

Cela vous met dans le même état que le clone frais.

 git clean -ffdx 

Supprimer tous les dossiers et fichiers supplémentaires dans ce repo mais pas ses sous-modules

 git clean -fdx 

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

 git clean -fd 

Supprimer les dossiers supplémentaires + les fichiers ignorés (mais pas les nouveaux fichiers ajoutés)

Si le fichier n’a pas été ignoré et pas encore enregistré, il rest. Notez le X majuscule.

 git clean -fdX 

Nouveau mode interactif

 git clean 

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 (ajoutez si nécessaire)

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

git clean -f -d -x $(git rev-parse --show-cdup) s’applique propre au répertoire racine, peu importe où vous l’appelez dans une arborescence de répertoires de 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 de nettoyer et de vous engager directement 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 aussi disponibles, vérifiez simplement git clean --help .

Pour moi, seuls les suivants ont travaillé:

 git clean -ffdx 

Dans tous les autres cas, je recevais le message “Skipping Directory” pour certains sous-répertoires.

Une bouée de sauvetage pour une telle situation que je viens d’inventer et que j’ai essayé (cela fonctionne parfaitement):

 git add . git reset --hard HEAD 

Il faut se méfier! Assurez-vous de procéder aux modifications nécessaires (même dans les fichiers non suivis) avant de procéder à cette opération .

Si vous voulez juste supprimer les fichiers listés comme non suivis par ‘git status’

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

Je préfère que cela «git clean», car «git clean» supprime les fichiers ignorés par git, donc votre prochaine génération devra tout reconstruire et vous risquez également de perdre vos parameters IDE.

Pour savoir ce qui sera supprimé avant de supprimer réellement:

git clean -d -n

Il va sortir quelque chose comme:

Supprimerait sample.txt

Pour supprimer tout ce qui figure dans la sortie de la commande précédente:

git clean -d -f

Il va sortir quelque chose comme:

Supprimer sample.txt

Pour supprimer les fichiers non suivis, 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 qui seront supprimés. Maintenant, pour supprimer réellement ces fichiers, utilisez cette commande:

 git clean -fd 

La commande git clean normale ne supprime pas les fichiers non suivis avec ma git version 2.9.0.windows.1 .

 $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! 

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

J’ai couvert quelques notions de base sur mon blog, git-intro-basic-commands

La commande uggested pour supprimer les fichiers non enregistrés de git docs est git clean

git clean – Supprime les fichiers non suivis de l’arborescence de travail

Méthode suggérée: Mode interactif en utilisant git clean -i afin que nous puissions en avoir le contrôle. laissez voir 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 non suivis en plus des fichiers non suivis. Si un répertoire non suivi est géré par un référentiel Git différent, il n’est pas supprimé par défaut. Utilisez l’option -f deux fois si vous voulez vraiment 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 refuse de s’exécuter à moins que -f, -n ou -i ne soient donnés.

3. -i, –interactif

Montrer ce qui serait fait et nettoyer les fichiers de manière interactive. Voir «Mode interactif» pour plus de détails.

4. -n, –dry-run

Ne supprimez rien, montrez simplement ce qui serait fait.

5. -q, –quiet

Soyez silencieux, ne signalez que les erreurs, mais pas les fichiers supprimés avec succès.

6. -e, –exclude =

En plus de ceux trouvés dans .gitignore (par répertoire) et $ GIT_DIR / info / exclude, considérez également que ces modèles se trouvent dans l’ensemble des règles ignore en vigueur.

7. -x

N’utilisez pas les règles d’ignorance standard lues à partir de .gitignore (par répertoire) et de $ GIT_DIR / info / exclude, mais utilisez toujours les règles ignore avec les options -e. Cela permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Cela peut être utilisé (éventuellement en conjonction avec git reset) pour créer un répertoire de travail vierge pour tester une version propre.

8. -X

Ne supprimez que les fichiers ignorés par Git. Cela peut être utile pour tout reconstruire à partir de rien, mais conservez les fichiers créés manuellement.

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

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

Exemple:

 git reset --hard HEAD 

Liens :

  1. https://git-scm.com/docs/git-reset
  2. Comment utiliser ‘git reset –hard HEAD’ pour revenir à un commit précédent?
  3. Réinitialiser la twig du référentiel local pour qu’elle soit comme le référentiel distant HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

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

Utilisez toujours -n avant d’exécuter la commande réelle, car cela vous montrera quels fichiers seront supprimés.

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

Par défaut, git clean supprime uniquement les fichiers non suivis qui ne sont pas ignorés. Tout fichier correspondant à un motif dans votre fichier .gitignore ou autre fichier ignoré ne sera pas supprimé. Si vous souhaitez également supprimer ces fichiers, vous pouvez append -x à la commande clean.

 git clean -f -d -x 

Il y a aussi le mode interactif disponible -i avec la commande clean

 git clean -x -i 

Alternativement

Si vous n’êtes pas sûr à 100% que la suppression de votre travail non engagé est sûre, vous pouvez utiliser le stockage à la place.

 git stash --all 

Il effacera également votre répertoire, mais vous donnera la possibilité de récupérer les fichiers à tout moment en utilisant stash with Apply ou pop . Ensuite, vous pourrez effacer votre réserve en utilisant:

 git stash drop // or clean 

Nettoyer le repository git et tous les sous-modules de manière récursive

La commande suivante nettoie récursivement 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) 

oh-my-zsh avec zsh fournit ces superbes alias via le plugin git. Ils peuvent également être utilisés dans bash.

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

  • gclean supprime les répertoires non suivis en plus des fichiers non suivis .
  • gpristine hard réinitialise les modifications locales, supprime les répertoires non suivis, les fichiers non suivis et n’utilise pas les règles Ignorer standard lues dans .gitignore (par répertoire) et $ GIT_DIR / info / exclude, mais utilise toujours les règles ignore avec les options -e . Cela permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Cela peut être utilisé (éventuellement en conjonction avec git reset) pour créer un répertoire de travail vierge pour tester une version propre .
 git clean -f 

va supprimer les fichiers non suivis du 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.

J’ai échoué en utilisant les réponses les plus populaires ici – git ne supprime de toute façon pas les fichiers non suivis du repository. Aucune idée pourquoi. Ceci est ma réponse super simplifiée sans commandes spéciales!

Mission: supprimer les fichiers non suivis du repository git:

  1. Déplacez des fichiers et des dossiers ailleurs dans votre dossier de projet local pendant un certain temps
  2. Supprimer toutes les lignes de .gitignore à propos de ces fichiers et dossiers pour la validation
  3. Git append.
  4. Git commit -m «Nettoyage du référentiel à partir de fichiers non suivis»
  5. Git push

Tous les fichiers et dossiers ont été supprimés du référentiel.

Permet de les restaurer sur localhost si vous en avez besoin:

  1. Reculer tous les fichiers et dossiers que vous avez déplacés temporairement dans le dossier du projet local
  2. Recule toutes les lignes de ces fichiers et dossiers vers .gitignore
  3. Git append.
  4. Git commit -m “Vérification ou fichiers n’apparaissant plus dans le repository git”
  5. Git push

Vous avez terminé!