web-dev-qa-db-fra.com

comment supprimer les fichiers non suivis dans Git?

Je travaille sur une branche, disons "expérimentale" que je branche de ma branche principale. Ensuite, je génère un modèle utilisateur dans la branche expérimentale, mais je ne les ajoute pas encore à l'index.

Que dois-je faire si je veux ignorer toutes les modifications des fichiers ajoutés récemment dans ma branche expérimentale? Les fichiers non suivis sont listés 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 toutes ces modifications, mais tous les fichiers ci-dessus sont toujours visibles.

Quelqu'un veut-il m'éclairer?

98
Sarun Sermsuwan

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

git clean -fdx

-f - force

-d - les répertoires aussi

-x - supprime également les fichiers ignorés (ne l'utilisez pas si vous ne voulez pas supprimer les fichiers ignorés)

196
manojlds

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

Note: _ Ajoutez -n ou --dry-run_ pour vérifier ce qu'il va faire.

16
bit_cracker007

Ce sont des fichiers non suivis. Cela signifie que Git ne les suit pas. Il ne les répertorie que parce qu'ils ne sont pas dans le fichier git ignore. Comme ils ne sont pas suivis par git, git reset ne les touchera pas.

Si vous voulez supprimer tous les fichiers non suivis, le moyen le plus simple est git clean -f (utilisez plutôt git clean -n si vous voulez voir ce que cela détruirait sans rien supprimer). Sinon, vous pouvez simplement supprimer les fichiers que vous ne voulez pas à la main.

15
Lily Ballard

La commande pour votre sauvetage est git clean.

2
Jagriti Kumari

Pour supprimer des 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

0
Sonu Mishra

Bien que git clean fonctionne bien, je trouve toujours utile d’utiliser mon propre script pour nettoyer le dépôt Git, mais il présente certains avantages.

Ceci affiche une liste des fichiers à nettoyer, puis invite de manière interactive à nettoyer ou non. C’est presque toujours ce que je veux car demander interactivement par fichier devient fastidieux.

Il permet également le filtrage manuel de la liste, ce qui est très utile lorsqu'il existe des types de fichiers que vous ne souhaitez pas nettoyer (et qui ont des raisons de ne pas valider).


git_clean.sh


#!/bin/bash
readarray -t -d '' FILES < <(
    git ls-files -z --other --directory |
        grep --null-data --null -v '.bin$\|Cargo.lock$'
)
if [ "$FILES" = "" ]; then
    echo  "Nothing to clean!"
    exit 0
fi

echo "Dirty files:"
printf '  %s\n' "${FILES[@]}"

DO_REMOVE=0
while true; do
    echo ""
    read -p "Remove ${#FILES[@]} files? [y/n]: " choice
    case "$choice" in
        y|Y )
            DO_REMOVE=1
            break ;;
        n|N )
            echo "Exiting!"
            break ;;
        * ) echo "Invalid input, expected [Y/y/N/n]"
            continue ;;
    esac
done

if [ "$DO_REMOVE" -eq 1 ];then
    echo "Removing!"
    for f in "${FILES[@]}"; do
       rm -rfv "$f"
    done
fi
0
ideasman42

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

  1. Ajoutez les fichiers non suivis à la zone de transfert avec git add
  2. revenir à l'état précédent du référentiel local avec git reset --hard.
0
Tomasz Nazarenko

Eh bien, j'ai eu le même problème. J'avais pris au plus tard mais il y avait quelques changements dans la section locale en raison de laquelle la fusion ne se produisait pas pour un fichier particulier Le fichier n'a pas été suivi et je ne voulais pas d'eux. Ce que j'ai fait était - 

$ git checkout filepath/filename

chemin du fichier - L'emplacement d'où j'ai fait le git bash . puis quand j'ai pris la dernière, les modifications étaient disponibles

0
skb