Comment supprimer les fichiers locaux (non suivis) de l'arborescence de travail Git actuelle ?

StackOverflow https://stackoverflow.com/questions/61212

  •  09-06-2019
  •  | 
  •  

Question

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

Était-ce utile?

La solution

Selon la documentation Git git propre

Supprimer les fichiers non suivis de l'arborescence de travail


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

# Print out the list of files which will be removed (dry run)
git clean -n

Étape propre - méfiez-vous:cela supprimera les fichiers:

# Delete the files from the repository
git clean -f
  • Pour supprimer des répertoires, exécutez git clean -f -d ou git clean -fd
  • Pour supprimer les fichiers ignorés, exécutez 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

Note la différence de cas 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 le spécifier -f sinon, rien ne se passera réellement.

Voir à nouveau le git-clean documents pour plus d'informations.


Possibilités

-f, --force

Si la variable de configuration GIT Clean.RequireForce n'est pas définie sur False, Git Clean refusera d'exécuter sauf si vous -f, -n ou -i.

-x

N'utilisez pas les règles d'ignore standard lues à partir de .gitignore (par répertoire) et $GIT_DIR/info/exclude, mais utilisez toujours les règles d'ignoré données avec -e choix.Cela permet de supprimer tous les fichiers non suivis, y compris la construction de produits.Cela peut être utilisé (peut-être en conjonction avec Git Reset) pour créer un répertoire de travail immaculé pour tester une version propre.

-X

Supprimez uniquement les fichiers ignorés par Git.Cela peut être utile pour tout reconstruire à partir de zéro, mais garder les fichiers créés manuellement.

-n, -dry-run

Ne supprimez rien, montrez simplement ce qui serait fait.

-d

Supprimez les répertoires non suivis en plus des fichiers non suivis.Si un répertoire non suivi est géré par un autre référentiel GIT, il n'est pas supprimé par défaut.Utiliser -f Option deux fois si vous souhaitez vraiment supprimer un tel répertoire.

Autres conseils

Utiliser git clean -f -d s'assurer que répertoires sont également supprimés.

Vous pourrez alors vérifier si vos fichiers ont réellement disparu git status.

Je suis surpris que personne n'en ait parlé auparavant :

git clean -i

Cela représente interactif et vous obtiendrez un aperçu rapide de ce qui va être supprimé, vous offrant la possibilité d'inclure/exclure les fichiers concernés.Dans l'ensemble, toujours plus rapide que d'exécuter l'obligation --dry-run avant le vrai nettoyage.

Vous devrez lancer un -d si vous souhaitez également vous occuper des dossiers vides.Au final, cela donne un joli alias :

git iclean

Cela étant dit, la tenue supplémentaire des commandes interactives peut être fatigante pour les utilisateurs expérimentés.Ces jours-ci, j'utilise simplement le déjà mentionné git clean -fd

Si le répertoire non suivi est un référentiel git à part entière (par ex.sous-module), vous devez utiliser -f deux fois:

git clean -d -f -f

Un moyen simple de supprimer les fichiers non suivis

Pour supprimer tous les fichiers non suivis, le moyen simple est de ajoutez-les tous en premier et réinitialiser le dépôt comme ci-dessous

git add --all
git reset --hard HEAD

J'aime git stash push -u parce que tu peux tous les annuler avec git stash pop.

MODIFIER:J'ai également trouvé un moyen d'afficher un fichier non suivi dans une cache (par ex. git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

EDIT2 : git stash save est déprécié au profit de push.Merci @script-wolf.

C'est ce que j'utilise toujours :

git clean -fdx

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

git-clean c'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 d'un sous-répertoire particulier,

git clean -f {dir_path}

Et une manière combinée de supprimer les répertoires/fichiers non suivis et les fichiers ignorés.

git clean -fxd {dir_path}

après cela, vous n'aurez modifié les fichiers que dans git status.

git clean -fd supprime le répertoire

git clean -fX supprime les fichiers ignorés

git clean -fx supprime les fichiers ignorés et non ignorés

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

git clean -fdXx

consultez le manuel git pour plus d'aide

Supprimez tous les dossiers et fichiers supplémentaires dans ce référentiel + sous-modules

Cela vous met dans le même état qu’un nouveau clone.

git clean -ffdx

Supprimez tous les dossiers et fichiers supplémentaires de ce dépôt, mais pas ses sous-modules

git clean -fdx

Supprimez uniquement les dossiers supplémentaires mais pas les fichiers (ex.dossier de construction)

git clean -fd

Supprimez les dossiers supplémentaires + les fichiers ignorés (mais pas les fichiers nouvellement ajoutés)

Si le fichier n'a pas été ignoré et n'a pas encore été archivé, il reste.Notez le X majuscule.

git clean -fdX

Nouveau mode interactif

git clean

D'ACCORD, suppression fichiers et dossiers indésirables non suivis sont faciles à utiliser git en ligne de commande, faites comme ceci :

git clean -fd

Revérifier avant de le faire car cela supprimera les fichiers et dossiers sans créer d'historique...

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

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

git clean -f

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

git clean -fd

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

Et en ajoutant -i flag, fait que git vous demande l'autorisation de supprimer des fichiers un par un lors de vos déplacements.

Si vous n'êtes pas sûr et souhaitez d'abord vérifier les choses, ajoutez -n drapeau.

Utiliser -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émorisable, spécialement j'ai vu beaucoup de gens confondre -f pour nettoyer le dossier parfois ou le mélanger d'une manière ou d'une autre !


deleting unwanted untracked files and folder

Une meilleure façon est d'utiliser :git propre

git clean -d -x -f

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

Remplacez également le -f dispute avec -n effectuer un dry-run ou -i pour le mode interactif et il vous dira ce qui sera supprimé.

Approche interactive 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 forcer
-d pour le répertoire
-x pour les fichiers ignorés (ajouter si nécessaire)

Note: Ajouter -n ou --essai à sec juste pour vérifier ce qu'il fera.

git clean -f -d -x $(git rev-parse --show-cdup) s'applique clean 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 il ne vous oblige pas à quitter le dossier dans lequel vous travaillez actuellement et permet de nettoyer et de valider directement depuis l'endroit où vous vous trouvez.

Assurez-vous que les drapeaux -f, -d, -x correspond à 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 existe d'autres drapeaux également disponibles, il suffit de vérifier git clean --help.

Pour moi, seuls les éléments suivants ont fonctionné :

git clean -ffdx

Dans tous les autres cas, je recevais un message "Sauter le répertoire" pour certains sous-répertoires.

Une astuce pour une telle situation que je viens d'inventer et d'essayer (qui fonctionne parfaitement) :

git add .
git reset --hard HEAD

Méfiez-vous! Assurez-vous de valider toutes les modifications nécessaires (même dans les fichiers non suivis) avant d'effectuer cela.

Si vous souhaitez simplement supprimer les fichiers répertoriés comme non suivis par « git status »

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

Je préfère cela à «Git Clean» parce que «Git Clean» supprimera les fichiers ignorés par Git, donc votre prochaine version devra tout reconstruire et vous pourriez également perdre vos paramètres IDE.

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

git clean -d -n

Cela produira quelque chose comme :

Supprimerait 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 :

Suppression de 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 ces fichiers, utilisez cette commande :

git clean -fd

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

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

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

Par défaut, git clean supprimera uniquement les fichiers non suivis qui ne sont pas ignorés.Tout fichier correspondant à un modèle dans votre .gitignore ou d'autres fichiers ignorés ne sera pas supprimé.Si vous souhaitez également supprimer ces fichiers, vous pouvez ajouter un -x à la commande clean.

git clean -f -d -x

Un mode interactif est également 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 validé est sûre, vous pouvez utiliser le stockage caché.

git stash --all

Cela effacera également votre répertoire mais vous donnera la possibilité de récupérer les fichiers à tout moment en utilisant planque avec appliquer ou populaire.Ensuite, vous pourrez effacer votre réserve en utilisant :

git stash drop // or clean

Normale git clean la commande ne supprime pas les fichiers non suivis avec mon 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 bases ici sur mon blog, commandes git-intro-basic

Commande suggérée pour Suppression des fichiers non suivis de git docs est git propre

git propre - Supprimer les fichiers non suivis de l'arborescence de travail

Méthode suggérée : Mode interactif en utilisant git clean -iafin que nous puissions en avoir le contrôle.voyons 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 autre référentiel GIT, il n'est pas supprimé par défaut.Utilisez l'option -f deux fois si vous souhaitez 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 refusera d'exécuter sauf si vous donne -f, -n ou -i.

3.-i, --interactif

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

4.-n, --exécution à sec

Ne supprimez rien, montrez simplement ce qui serait fait.

5.-q, --calme

Soyez silencieux, signalez uniquement les erreurs, mais pas les fichiers qui ont été supprimés avec succès.

6.-e , --exclude=

En plus de ceux trouvés dans .gitignore (par répertoire) et $ git_dir / info / exclure, considérez également ces modèles comme dans l'ensemble des règles d'ignoré en vigueur.

7.-X

N'utilisez pas les règles d'ignorance standard lisées à partir de .gitignore (par répertoire) et $ git_dir / influt / exclure, mais utilisez toujours les règles d'ignorance données avec -e.Cela permet de supprimer tous les fichiers non suivis, y compris les produits de build.Cela peut être utilisé (peut-être en conjonction avec Git Reset) pour créer un répertoire de travail immaculé pour tester une version propre.

8.-X

Supprimez uniquement les fichiers ignorés par Git.Cela peut être utile pour tout reconstruire à partir de zéro, 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 git ci-dessous.

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

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 branche du référentiel local pour qu'elle ressemble au référentiel distant HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

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

La commande suivante nettoiera le référentiel GIT actuel et tous ses sous-modules récursivement:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

oh-mon-zsh avec zsh fournit ces excellents alias via le plugin git.Ils peuvent également être utilisés en 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 réinitialiser dur les modifications locales, supprimer n'utilisez pas les règles d'ignorance standard lues à partir de .gitignore (par répertoire) et $GIT_DIR/info/exclude, mais utilisez toujours les règles d'ignorance données avec les options -e.Cela permet de supprimer tous les fichiers non suivis, y compris les produits de build.Cela peut être utilisé (éventuellement en conjonction avec git reset) pour créer un répertoire de travail vierge afin de tester une version propre..
git clean -f

supprimera les fichiers non suivis du git actuel

git clean -fd

lorsque vous souhaitez supprimer des répertoires et des fichiers, cela supprimera uniquement les répertoires et fichiers non suivis

Note:Accédez d’abord au répertoire et extrayez la branche que vous souhaitez nettoyer.

-i mode interactif et il vous dira ce qui sera supprimé et vous pourrez choisir une action dans la liste.

  1. Nettoyer des dossiers uniquement [Les dossiers ne seront pas répertoriés et ne seront pas nettoyés] :$ git clean -i

  2. Nettoyer fichiers et dossiers: $ git clean -d -i

-d y compris les répertoires.


Si tu choisis c de la liste.Les fichiers/dossiers qui ne sont pas suivis seront supprimés et supprimeront également les fichiers/dossiers que vous avez gâchés.*

Par exemple:Si vous restructurez le dossier de votre télécommande et transférez les modifications sur votre ordinateur local.les fichiers/dossiers créés initialement par d’autres seront dans le dossier précédent et dans le nouveau que vous restructurez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top