Linux-Befehl zum löschen aller Dateien außer .git-Ordner?
Möchte ich löschen Sie alle im aktuellen Verzeichnis den Inhalt außer für die .git/
Ordner, bevor ich die neuen Dateien kopieren in der Branche.
Was ist der linux-Befehl dafür?
- In den meisten Fällen, ich würde nur
rm -rf *
würde überspringen alle dot-Dateien, die dann manuell rm-Reste, wie gebraucht. Besonders fancy, die Sie verwenden könnenfind
aber es ist auch möglich, nurls -A > /tmp/doit
dann Bearbeiten/tmp/doit
zu rm, oder rm-r alles außer.git
, und das ist oft einfacher. - oder bewegen Sie einfach
.git
zu einem diff-Ordner temporär entfernen Sie dann alle und bewegen Sie ihn dann wieder - Wenn müssen Sie diesen Vorgang direkt nach dem Klonen, dann kann man einfach Klonen mit der
-n
(--no-checkout
) option:git clone -n -b <branch> <repository> <directory>
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zurücksetzen des index ist Billig, so dass
Dann können Sie den index zurücksetzen (mit
git reset
) oder geradeaus zum Auschecken einen neuen Zweig.git reset
nochgit checkout
für mich gearbeitet. Ichgit reset --hard
.-x
option zum umgehen der gitignoreFinden und mit prune option.
Edit: Für zwei Verzeichnisse
.git
unddist
find: './scss': no such file or directory
aber noch alles löscht. komischno such file or directory
Dies ist meine Antwort der Wahl.find
option-delete
nicht ausgeführt werden, sondernrm
?-delete
option:Because -delete implies -depth, you cannot usefully use -prune and -delete together.
-prune
begrenzt effektivfind
im aktuellen Verzeichnis-Ebene, also statt durch den Baum, und löschen Sie jede Datei, verwendet esrm -r
zu löschen, jede Datei oder jeden Ordner im root-Verzeichnis. Und wie @PxL darauf hingewiesen,-prune
schließt-delete
, da-delete
ist nicht rekursiv.Als Crayon erwähnt in den Kommentaren, die einfach Lösung wäre einfach verschieben .git aus dem Verzeichnis löschen alles, und bewegen Sie ihn dann wieder ein. Aber wenn Sie es tun möchten die Lust Weg,
find
hat Ihre Rückseite:Die erste Zeile habe ich es da mit
find
, ich will immer zu überprüfen, um sicherzustellen, dass Sie finden, was ich denke, es ist, vor der Ausführung der-delete
.Edit: Hatte ein braindead moment, nicht einfach kopieren von meinem terminal.
Edit2: Hinzugefügt
-not -name ".git"
hält, es versucht zu löschen, die.git
Verzeichnis, und unterdrückt die Fehler. Abhängig von der Reihenfolgefind
versucht zu löschen, es kann nicht auf nicht-leere Verzeichnisse.-prune
. Es ist eine andere Art der Erfüllung der gleichen Aufgabe. Und wie für die erste Zeile: jedes mal, wenn Sie einefind -delete
Sie sollten es ausführen, ohne die-delete
ersten, um sicherzustellen, dass Sie nicht tun etwas unbeabsichtigt.-path "./.git/*"
mit-path "*/.git/*"
dann funktioniert es für den Ausschluss von mehreren git repositories, die unter einem gemeinsamen Verzeichnis. Wieprojects/project1/.git
undprojects/project2/.git
dann diese ausgeführt werden können, direkt innerhalb derprojects/
- Verzeichnis.Eine Möglichkeit ist die Verwendung
rm -rf *
, die löschen Sie alle Dateien aus dem Ordner außer der dotfiles und dotfolders wie.git
. Sie können dann löschen Sie die dotfiles und dotfolders eins nach dem anderen, so dass Sie nicht verpassen auf wichtige dotfiles wie.gitignore
,.gitattributes
später.Ein anderer Ansatz wäre, sich zu bewegen, Ihre
.git
Ordner aus dem Verzeichnis und dann gehen Sie zurück und löschen den gesamten Inhalt des Ordners und verschieben der.git
Ordner zurück.rm -r *
ist die beste Lösung. Halten .gitignore und anderen Dateien, die wichtig sein kann.zusätzliche
rm
am Ende wird, entfernen Sie das Besondere.gitignore
. Nehmen Sie, dass Sie, wenn Sie brauchen die Datei..git
Dateien, während diejenigen, sind die gleichen, die Sie zu sein scheinen, zu löschen.ls
-bash: syntax error near unexpected token
|"sollte, finden Sie alle Dateien und Verzeichnisse mit den Namen .git
finden sollten Sie alle Datei und Verzeichnisse nicht genannt .git
löschen Sie alle Dateien, die Sie finden
sicher sein, dass der das zu finden ist, zu tun, was Sie wollen
wenn Sie möchten, löschen Sie die Verzeichnisse ändern, der rm-Befehl zu
rm -rvf
Habe ich auch die
v
option, um die Dateien, die gelöscht werden.wenn Sie sicherstellen möchten, dass über die Dateien, bevor Sie Sie löschen
Rohr den Befehl "suchen", um eine Datei und überprüfen Sie die Ergebnisse
find . -not -name .git | grep git
- Sie werden sehen, dass Sie versuchen, löschen Sie alle Dateien in der.git
Verzeichnis, weil Sie nicht haben ".git" in Ihrem Dateinamen. Sie suchen -Pfad und einige wildcards.find
Befehl funktioniert.