Je souhaite supprimer tout le contenu du répertoire actuel, à l’ exception du dossier .git/
avant de copier les nouveaux fichiers dans la twig.
Qu’est-ce que la commande linux pour cela?
Avec l’option find et prune.
find . -path ./.git -prune -o -exec rm -rf {} \; 2> /dev/null
Edit: Pour deux répertoires .git
et dist
find . -path ./.git -prune -o \( \! -path ./dist \) -exec rm -rf {} \; 2> /dev/null
Réinitialiser l’index est bon marché, donc
git rm -rf . git clean -fxd
Vous pouvez ensuite réinitialiser l’index (avec git reset
) ou aller directement sur une nouvelle twig.
Comme Crayon l’a mentionné dans les commentaires, la solution la plus simple serait de déplacer le fichier .git hors du répertoire, de tout supprimer, puis de le réinstaller. Mais si vous voulez le faire de façon élégante, find
:
find -not -path "./.git/*" -not -name ".git" | grep git find -not -path "./.git/*" -not -name ".git" -delete
La première ligne que j’y ai mise car avec find
, je veux toujours vérifier pour s’assurer qu’elle trouve ce que je pense, avant de -delete
.
Edit: Avait un moment braindead, n’a pas simplement copié de mon terminal.
Edit2: Ajout de -not -not -name ".git"
, qui l’empêche d’essayer de supprimer le répertoire .git
et supprime les erreurs. Selon l’ordre de find
tentatives de suppression d’éléments risquent d’échouer sur des répertoires non vides.
L’une des méthodes consiste à utiliser rm -rf *
, ce qui supprime tous les fichiers du dossier, à l’exception des fichiers dotfiles et des dossiers de fichiers comme .git
. Vous pouvez alors supprimer les fichiers dotfolders et les dotfolders un par un, de sorte que vous ne manquiez pas les fichiers dot importants comme .gitignore
, .gitatsortingbutes
plus tard.
Une autre approche serait de déplacer votre dossier .git
hors du répertoire, puis de revenir en arrière et de supprimer tout le contenu du dossier et de déplacer le dossier .git
.
mv .git/ ../ cd .. rm -rf folder/* mv .git/ folder/ cd folder
for i in `ls | grep -v ".git"` ; do rm -rf $i; done; rm .gitignore;
le rm
supplémentaire à la fin supprimera le .gitignore
spécial. Supprimez cela si vous avez besoin du fichier.
find . -name .git
find . -not -name .git
find . -not -name .git -exec rm -vf {} \;
assurez-vous que la trouvaille fait ce que vous voulez
Si vous souhaitez supprimer des répertoires, remplacez la commande rm par rm -rvf
l’option v
pour afficher les fichiers supprimés.
si vous voulez vous assurer des fichiers avant de les supprimer, dirigez la commande find vers un fichier et examinez les résultats