Wie löschen Sie nicht verfolgte lokale Dateien aus Ihrem aktuellen Arbeitsbaum?
Antworten
Zu viele Anzeigen?Ich bin mit den meisten gängigen Antworten hier gescheitert - Git löscht nicht nicht verfolgten Dateien aus dem Repository. Keine Ahnung warum. Dies ist meine super vereinfachte Antwort ohne SPEZIELLE GIT-BEFEHLSELBST!
Aufgabe: Löschen von nicht verfolgten Dateien aus dem Git-Repository:
- Verschieben Sie Dateien und Ordner für eine Weile aus Ihrem lokalen Projektordner an einen anderen Ort
- Löschen Sie alle Zeilen in .gitignore zu diesen Dateien und Ordnern für die Übertragung
- Git hinzufügen.
- Git commit -m "Repository von nicht verfolgten Dateien bereinigen"
- Git-Push
Alle Dateien und Ordner wurden aus dem Repository gelöscht.
Lassen Sie sie auf localhost wiederherstellen, wenn Sie sie brauchen:
- Verschieben Sie alle Dateien und Ordner, die Sie temporär verschoben haben, wieder zurück in den lokalen Projektordner
- Verschieben Sie alle Zeilen zu diesen Dateien und Ordnern zurück nach .gitignore
- Git hinzufügen.
- Git commit -m "Überprüfung oder Dateien erscheinen nicht mehr im Git-Repository"
- Git-Push
Sie sind fertig!
Wenn nichts anderes funktioniert, kann man einfach alle Änderungen, die der Befehl "git status" auflistet, mit der folgenden Kombination entfernen:
git add -A && git commit -m temp && git reset --hard HEAD^
Dadurch werden zunächst alle Ihre Änderungen durchgeführt, dann eine temporäre Übertragung erstellt und anschließend verworfen.
Benutzung: git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x | -X] [--] ...
-q, --quiet do not print names of files removed
-n, --dry-run dry run
-f, --force force
-i, --interactive interactive cleaning
-d remove whole directories
-e, --exclude <pattern>
add <pattern> to ignore rules
-x remove ignored files, too
-X remove only ignored files
Ich verwende dieses Skript, das auflistet, was entfernt werden soll, und mich dann den Vorgang bestätigen lässt.
Das ist nützlich, denn manchmal habe ich Patches oder andere Dateien, die ich überprüfen möchte, bevor ich alles wegwische.
#!/bin/bash
readarray -t -d '' FILES < <(git ls-files -z --other --directory)
if [ "$FILES" = "" ]; then
echo "Nothing to clean!"
exit 0
fi
echo -e "Dirty files:\n"
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
104 Stimmen
Dieser interaktive Git-Spickzettel ndpsoftware.com/git-cheatsheet.html zeigt den Git-Arbeitsbereich (Google liefert mit "Arbeitsbereich" bessere Ergebnisse als mit "Arbeitskopie").
38 Stimmen
Hinweis: Wenn Sie nur die algunos nicht verfolgte Dateien, aber nicht alle von ihnen ,
git clean
hat jetzt eine interaktiv Modus! Siehe meine Antwort auf diese andere Frage : git 1.8.4+0 Stimmen
Bevor Sie eine neue Antwort schreiben, bedenken Sie, dass es bereits mehr als 25 Antworten auf diese Frage gibt. Vergewissern Sie sich, dass Ihre Antwort einen Beitrag leistet, der nicht in den vorhandenen Antworten enthalten ist
9 Stimmen
Zum Verständnis für Uneingeweihte und Git-Neulinge: Führen Sie git status aus, und wenn es eine Datei als untracked anzeigt und Sie diese Datei nicht im Repo haben wollen, können Sie sie einfach in Ihrem Dateisystem löschen oder verschieben. Dies schadet weder Ihrem lokalen Projektarchiv noch Git. Sie können auch
git clean
oder einige Variationen der folgenden Antworten, einschließlich der interaktiven Version, um nur bestimmte Dateien zu löschen, aber der interaktive Modus kann mühsam sein. Was auch immer Sie tun, stellen Sie sicher, dass Sie verstehen, wasgit clean
löschen oder verwenden--dry-run
um Ihnen dies mitzuteilen, ohne etwas zu löschen.6 Stimmen
Wenn die Dateien noch nicht nachverfolgt werden, könnten Sie sie dann nicht einfach ohne Git entfernen?
rm files-to-be-deleted