Zum Inhalt springen

git clean

gitclean

Beschreibung

Der Befehl git clean wird verwendet, um nicht verfolgte Dateien aus dem Arbeitsverzeichnis zu entfernen. Im Gegensatz zu git reset und git checkout, die auf verfolgten oder bereitgestellten Dateien arbeiten, zielt git clean speziell auf Dateien ab, die noch nicht zum Git-Index hinzugefügt wurden. Nicht verfolgte Dateien sind solche, die innerhalb des Arbeitsverzeichnisses erstellt wurden, aber noch nicht verfolgt werden. Das folgende Beispiel zeigt den Unterschied zwischen verfolgten und nicht verfolgten Dateien:

git clean

bash
mkdir test_directory
cd test_directory/
git init .
#Initialized empty Git repository in /Users/kev/code/test_directory/.git/
echo "tracked file" > ./test_tracked_file
git add ./test_tracked_file
echo "untracked" > ./test_untracked_file
mkdir ./test_untracked_dir && touch ./test_untracked_dir/file
git status
#On branch master
#No commits yet
#Changes to be committed:
       # (use "git rm --cached <file>..." to unstage)
                 #new file: test_tracked_file
#Untracked files:
        # (use "git add <file>..." to include in what will be committed) 
                 #test_untracked_dir/ 
                 #test_untracked_file

Als Ergebnis des obigen Beispiels haben Sie ein neues Git-Repository im Verzeichnis test_directory, das eine test_tracked_file enthält, die dem Git-Index hinzugefügt wurde. Zusätzlich werden eine test_untracked_file sowie ein test_untracked_dir erstellt. Anschließend ruft das Beispiel git status auf, das eine Ausgabe anzeigt, die den internen Zustand der verfolgten und nicht verfolgten Änderungen darstellt. Danach wird der Befehl git clean verwendet, um diese nicht verfolgten Dateien zu entfernen.

Führen Sie git clean noch nicht aus. Das folgende Beispiel zeigt den Fehler, den es standardmäßig erzeugt. Git benötigt eine Force-Option, um git clean auszuführen, damit versehentlicher Datenverlust verhindert wird. Sobald es ausgeführt wurde, können Sie git clean nicht rückgängig machen. Es führt eine harte Löschung im Dateisystem durch. Sie sollten sicherstellen, dass Sie die nicht verfolgten Dateien wirklich löschen möchten, bevor Sie es ausführen.

git clean error

bash
git clean
#fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean

Häufige Optionen und Verwendung

Der Befehl git clean hat verschiedene Verwendungsarten mit unterschiedlichen Optionen.

git clean -n

bash
git clean -n

Die Option -n führt einen Dry Run von git clean aus. Sie zeigt die Dateien an, die entfernt werden sollen, löscht sie aber nicht.

git clean -n example

bash
git clean -n
#Would remove test_untracked_file

Wie Sie sehen, wird angezeigt, dass die test_untracked_file entfernt wird, wenn der Befehl git clean ausgeführt wird.

git clean -f

bash
git clean -f or --force

Die Option --force ist erforderlich, sofern die Konfigurationsoption clean.requireForce nicht auf false gesetzt ist. Sie löscht nicht verfolgte Dateien aus dem aktuellen Verzeichnis, außer den nicht verfolgten Ordnern oder Dateien, die mit .gitignore angegeben sind.

git clean --force

bash
git clean -f
#Removing test_untracked_file

Die Ausgabe zeigt, dass die test_untracked_file gelöscht wurde. An diesem Punkt zeigt git status an, dass die test_untracked_file gelöscht wurde und nicht gefunden werden kann. Standardmäßig wirkt git clean -f auf alle nicht verfolgten Dateien im aktuellen Verzeichnis. Zusätzlich kann mit der Option -f ein <path>-Wert übergeben werden, um eine bestimmte Datei zu entfernen.

Wenn Sie ein nicht verfolgtes Verzeichnis entfernen möchten, können Sie die Option -d verwenden, die git clean dazu anweist, dies zu tun, da Verzeichnisse standardmäßig ignoriert werden.

git clean -f <path>

bash
git clean -f <path>

Sie können auch die Kombination -dn verwenden.

git clean -dn

bash
git clean -dn
#Would remove test_untracked_dir/
git clean -df
#Removing test_untracked_dir/

Zuerst wird angezeigt, dass test_untracked_file zur Entfernung ansteht. Dann führen wir eine erzwungene Bereinigung aus und erhalten die Ausgabe, dass test_untracked_dir entfernt wurde.

git clean -x

bash
git clean -x

Die Option -x weist git clean an, auch ignorierte Dateien einzubeziehen. Sie sollten zuerst einen „Dry Run“ ausführen, bevor Sie die endgültige Löschung vornehmen. Die Option -x wirkt auf alle ignorierten Dateien. Das könnten unbeabsichtigte Dinge wie ./.idea-IDE-Konfigurationsdateien sein.

git clean -xf

bash
git clean -xf

Die Option -x kann zusammen mit anderen Optionen übergeben und kombiniert werden. Das obige Beispiel ist eine Kombination mit -f, die nicht verfolgte Dateien aus dem aktuellen Verzeichnis sowie alle Dateien löscht, die Git normalerweise ignoriert.

Interaktiver Modus

Der Befehl git clean hat einen interaktiven Modus, der durch die Option -i aktiviert wird. Im folgenden Beispiel verwenden wir zusätzlich die Option -d, um auf das test_untracked_dir zu wirken. Nach der Aktivierung des interaktiven Modus wird eine Eingabeaufforderung What now> angezeigt. Diese Aufforderung verlangt, einen Befehl auszuwählen, der auf die nicht verfolgten Dateien angewendet werden soll. Diese Befehle sind 6.

git clean -di

bash
git clean -di
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now>

Wir werden uns unten jeden Befehl ansehen.

  1. Befehl 6 erklärt die anderen Befehle.

git clean steps

bash
What now> 6
clean - start cleaning
filter by pattern - exclude items from deletion
select by numbers - select items to be deleted by numbers
ask each - confirm each deletion (like "rm -i")
quit - stop cleaning
help - this screen
? - help for prompt selection
  1. Befehl 1 löscht die genannten Elemente.

git clean step 1, clean

bash
git clean -di
What now> 1
clean
  1. Die Auswahl von Befehl 2 zeigt eine weitere Eingabeaufforderung zum Filtern der Liste der nicht verfolgten Dateien an.

git clean filter by pattern

bash
git clean -di
What now> 2

Nach der Auswahl von Befehl 2 benötigen wir das Platzhaltermuster *_file, das die Liste der nicht verfolgten Dateien auf test_untracked_dir beschränkt.

git clean steps

bash
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 2
test_untracked_dir/ test_untracked_file
Input ignore patterns>> *_file
test_untracked_dir/
  1. Wie Befehl 2 dient Befehl 3 dazu, die Liste der Namen nicht verfolgter Dateien weiter einzugrenzen. Die Auswahl dieses Befehls fordert zur Eingabe von Nummern auf, die einem Namen einer nicht verfolgten Datei entsprechen.

git clean select by numbers

bash
git clean -di
What now> 3
  1. Befehl 4 wird für jede nicht verfolgte Datei ausgeführt und zeigt eine Y/N-Abfrage zur Bestätigung der Löschung an.

git clean ask each

bash
git clean -di
What now> 4
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 4
Remove test_untracked_dir/ [y/N]? N
Remove test_untracked_file [y/N]? N
  1. Die Auswahl von Befehl 5 beendet die interaktive Sitzung.

git clean quit

bash
git clean -di
What now> 5

Practice

What are the functionalities and options of the 'git clean' command?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.