Übertragene Dateien in Git entfernen
Manchmal stellen wir fest, dass wir manuell herausfinden müssen, welche Dateien für den aktuellen Commit wichtig sind, und die unerwünschten aus dem Arbeitsverzeichnis entfernen müssen. Bei manuellen Prozessen kann es schwierig werden, besonders wenn wir ein großes Projekt mit vielen Entwicklern in einem Team aufbauen.
Angenommen, wir haben die falsche Datei im Repository festgeschrieben und möchten sie aus dem Zweig löschen. Der Befehl git reset
ist ein nützliches Werkzeug im Umgang mit Git. Dieser Befehl wird verwendet, um eine bestimmte Datei aus einem bestimmten Git-Commit oder dem Arbeitsverzeichnis im Zweig zu entfernen. Sie können beispielsweise den folgenden Befehl ausführen, wenn Sie die Datei "README.md"
aus dem Commit entfernen möchten, auf das HEAD
zeigt.
git reset -soft HEAD@{1}
Wir können die Datei aus einem bestimmten Commit entfernen, während die Änderungen im Arbeitsverzeichnis beibehalten werden, indem wir den folgenden Befehl ausführen.
git reset HEAD@{1}
Wie wir wissen, ist der Befehl zum Entfernen von Dateien aus einem Commit git reset
. Dieser Befehl kann mit den Optionen -p
und -u
verwendet werden. Die Option -p
erlaubt uns, die Änderungen im Arbeitsverzeichnis zu behalten, aber den Index zurückzusetzen. Die Option -u
setzt den Index und das Arbeitsverzeichnis zurück.
Lassen Sie uns das Entfernen von Dateien aus einem Commit mit dem folgenden Beispiel üben. Angenommen, wir haben einen neuen Commit erstellt und eine Datei mit dem Namen file1
hinzugefügt. Nun wollen wir diese Datei aus dem Commit löschen. Wir können dies mit dem folgenden Befehl beginnen.
git reset -p HEAD~1
Dieser Befehl weist Git an, den Index und das Arbeitsverzeichnis wieder auf den Commit HEAD~1
zurückzusetzen. Bevor wir den Commit erstellt haben, fügen wir die file2
zum Arbeitsverzeichnis hinzu. Nun wollen wir diese Datei aus dem Arbeitsverzeichnis löschen, aber im Index behalten. Es kann mit folgendem Befehl gestartet werden:
git reset -u HEAD~1
Dieser Befehl weist Git an, den Index und das Arbeitsverzeichnis auf den Commit HEAD~1
zurückzusetzen. Nehmen wir nun an, wir haben dem Index drei Dateien hinzugefügt und möchten alle Dateien außer file3
aus dem Index löschen. Wir können dies mit dem folgenden Befehl beginnen:
git reset -- '-p -- file3'
Dieser Befehl weist Git an, file3
zu behalten und die anderen Dateien aus dem Index innerhalb desselben Zweigs zu löschen. Mit dem Befehl git reset
können Dateien aus jedem Commit entfernt werden. Der Befehl kann mit der Option -p
verwendet werden, um die Änderungen im Index und im Arbeitsverzeichnis beizubehalten und die Datei aus dem Commit zu entfernen.
Der Befehl kann auch mit der Option -u
verwendet werden, um den Index und das Arbeitsverzeichnis zurückzusetzen, aber die Datei im Commit zu behalten.
Wenn wir eine Datei aus einem bestimmten Commit löschen möchten, können wir den Befehl git reset
mit der Option -hard
verwenden und den Commit nach HEAD
angeben. Zum Beispiel können wir den folgenden Befehl ausführen, wenn wir die Datei "README.md"
aus dem Commit-Test entfernen möchten.
git reset -hard test
Denken Sie daran, dass der Befehl git reset --hard
alle Änderungen verwirft, die Sie an Ihrem Arbeitsverzeichnis vorgenommen haben. Wenn Sie einige Dateien bearbeitet und andere entfernt haben, würde der letzte Befehl alle Änderungen entfernen, die Sie an Dateien vorgenommen haben, die noch in Ihrem Staging-Bereich vorhanden sind.
Angenommen, wir möchten die Datei nicht und möchten sie aus dem Staging-Bereich löschen und sie zu einer nicht verfolgten Datei machen. In diesem Fall verwenden wir den Befehl git rm
mit der Option --cached
. Wenn wir es auch aus dem Arbeitsverzeichnis entfernen wollen, überspringen wir die Option --cached
von diesem Befehl.
$ git rm --cached <file-name>
Hier sind wir mit dem Dateiwiederherstellungsprozess fast fertig. Die irrelevante Datei wurde aus dem Bereitstellungsbereich gelöscht, und alle anderen Änderungen werden bereitgestellt. Nun müssen wir diese Änderungen mit dem Befehl git commit
an den Branch committen. Wir haben jetzt unseren Commit zurück, aber dieser enthält nicht die Dateien, die nicht benötigt werden.
$ git commit -m "commit message"
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn