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?
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)
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.
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.
La commande pour votre sauvetage est git clean
.
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
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
Vous pouvez également revenir à l'état précédent du dépôt local d'une autre manière:
git add
. git reset --hard
.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