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




git tutorial pdf français (20)

Moyen simple de supprimer les fichiers non suivis

Pour supprimer tous les fichiers non suivis, le moyen le plus simple est de tous les ajouter en premier et de réinitialiser le référentiel comme indiqué ci-dessous.

git add --all
git reset --hard HEAD

Comment supprimez-vous les fichiers locaux non suivis de votre arbre de travail actuel?


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 de manière récursive:

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

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

Utilisez toujours -n avant d'exécuter la commande car elle vous indiquera quels fichiers seraient supprimés.

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

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

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 souscrit est sans danger, vous pouvez utiliser la fonction de stockage dissimulé.

git stash --all

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

git stash drop // or clean

C'est ce que j'utilise toujours:

git clean -fdx

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


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

git clean -i

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

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

git iclean

Cela étant dit, la manipulation 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é


La commande git clean normale 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!

Nous pouvons facilement supprimer les fichiers locaux non suivis de l’arbre de travail actuel de git en utilisant les commentaires 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 de référentiel local pour 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

Pour moi seulement suivant travaillé:

git clean -ffdx

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


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 réellement supprimer ces fichiers, utilisez cette commande:

git clean -fd

Selon la documentation Git git clean

Supprimer les fichiers non suivis de l'arbre de travail

L'étape 1 consiste à afficher ce qui sera supprimé à l'aide de l'option -n :

git clean -n

Clean Step - méfiez - vous: cela supprimera des 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 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, vous devez spécifier -f sinon rien ne se passera réellement.

Encore une fois, consultez la documentation 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 refusera de s'exécuter sauf si -f, -n ou -i est indiqué.

-X

N'utilisez pas les règles ignorées standard lues à partir de .gitignore (par répertoire) et $ GIT_DIR / info / exclude, mais utilisez quand même les règles ignorées fournies avec les options -e. Cela permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Ceci peut être utilisé (éventuellement conjointement avec git reset) pour créer un répertoire de travail vierge afin de tester une construction propre.

-X

Ne supprime que les fichiers ignorés par Git. Cela peut être utile pour tout reconstruire à partir de zéro, tout en conservant les fichiers créés manuellement.

-n

- séché

Ne supprimez rien en réalité, 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 autre référentiel Git, il n'est pas supprimé par défaut. Utilisez l'option -f à deux reprises si vous souhaitez vraiment supprimer un tel répertoire.


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

git clean -f {dir_path}

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

git clean -fxd {dir_path}

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


Si vous voulez juste supprimer les fichiers listés comme non suivis par 'statut git'

git stash save -u
git stash drop "[email protected]{0}"

Je préfère ceci à '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 vos paramètres IDE.


Une bouée de sauvetage pour une telle situation que je viens d'inventer et d'essayer (qui fonctionne parfaitement):

git add .
git reset --hard HEAD

Il faut se méfier! Assurez-vous de valider toutes les modifications nécessaires (même dans les fichiers non non suivis) avant de procéder.


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

Vous pouvez ensuite vérifier si vos fichiers ont vraiment disparu avec le git status .


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


git clean -f -d -x $(git rev-parse --show-cdup) applique un nettoyage propre au répertoire racine, où que vous l' git clean -f -d -x $(git rev-parse --show-cdup) dans une arborescence de répertoires du référentiel. Je l'utilise tout le temps, car cela ne vous oblige pas à quitter le dossier dans lequel vous travaillez et permet de nettoyer et de commettre directement à partir de l'endroit où vous vous trouvez.

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


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

consultez le manuel de git pour plus d'aide


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-run pour vérifier ce qu’il va faire.


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

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

git clean -ffdx

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

git clean -fdx

Supprimer uniquement les dossiers supplémentaires mais pas les fichiers (ex. Dossier de construction)

git clean -fd

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

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

git clean -fdX

Nouveau mode interactif

git clean

oh-my-zsh with zsh fournit ces grands 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 réinitialise 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 (par répertoire) et $ GIT_DIR / info / exclude, mais utilise toujours les règles ignorées données avec les options -e . Cela permet de supprimer tous les fichiers non suivis, y compris les produits de construction. Ceci peut être utilisé (éventuellement conjointement avec git reset) pour créer un répertoire de travail vierge afin de tester une construction propre .






git-branch