So git filter-branch alle Befehl?

So git filter-branch alle Befehl?

Der "Git Filter-BranchDer Befehl schreibt die gesamte Geschichte des Zweigs um, was bedeutet, dass alle von entfernten oder geänderten Commits dauerhaft verloren gehen werden. Daher wird vorgeschlagen, dass Sie Ihr Repository sichern, bevor Sie diesen Befehl verwenden. Darüber hinaus schafft dieser Befehl neue Commits und Sha Hash. Es wird also nicht empfohlen, es in einer öffentlichen Filiale zu verwenden.

In diesem Artikel wird erörtert:

    • Was sind die grundlegenden Filteroptionen für dieGit Filter-Branch" Befehl?
    • Wie man das nutzt “Git Filter-BranchBefehl mit dem “-Baumfilter" Möglichkeit?
    • Wie man das nutzt “Git Filter-BranchBefehl mit dem “-Indexfilter" Möglichkeit?
    • Wie man das nutzt “Git Filter-BranchBefehl mit dem “-MSG-Filter" Möglichkeit?

Was sind die grundlegenden Filteroptionen für den Befehl „Git Filter-Branch“?

Die grundlegenden Filteroptionen für “Git Filter-Branch”Befehle werden unten angegeben:

Filteroptionen Beschreibung
-Env-Filter Ändern Sie die Umgebung, in der Benutzer Commits machen.
-Baumfilter Schreiben Sie den Baum und seinen Inhalt neu.
-Indexfilter Schreiben Sie den Index neu.
-Elternfilter Schreiben Sie die übergeordnete Liste des Commits neu.
-MSG-Filter Schreiben Sie die Commit -Nachrichten um.
-Commit-Filter Commits durchführen.
-Tag-Name-Name-Filter Schreiben Sie den Tag -Namen neu.
-prunk-leer Weisen Sie die Git-Filter-Branch an, leere Commits zu entfernen.

So verwenden Sie den Befehl „Git filter-branch“ mit der Option "-Tree-Filter"?

Manchmal möchten Benutzer aus bestimmten Gründen eine bestimmte Datei aus allen Commits entfernen, z. B. wenn die Datei einige vertrauliche oder geheime Informationen enthält. Nutzen Sie in dieser Situation das “Git Filter -Branch -Tree -Filter 'RM -Rf'Befehl, um eine bestimmte Datei aus dem gesamten Verlauf eines Repositorys zu entfernen.

Befolgen Sie die angegebenen Anweisungen dazu.

Schritt 1: Navigieren Sie zum lokalen Repository

Schreiben Sie zunächst den Befehl gegebener Verderben auf und leiten Sie sie in das gewünschte Verzeichnis weiter:

$ cd "C: \ git \ local_repo"


Schritt 2: Repository -Inhalt anzeigen

Anschließend den Inhalt des aktuellen Repositorys mit dem folgenden Befehl anzeigen:

$ ls


Gemäß der folgenden Ausgabe enthält das aktuelle Repository zwei Dateien. Wählen Sie eine bestimmte Datei aus, die gelöscht werden muss. Zum Beispiel haben wir das ausgewähltDatei1.txt" Datei:


Schritt 3: Entfernen Sie die Datei aus dem gesamten Verlauf

Führen Sie dann den angegebenen Befehl zusammen mit dem ausgewählten Dateinamen aus, um diese Datei zu entfernen:

$ Git Filter-Branch-Stree-Filter 'RM-RF-Datei1.txt'


Hier:

    • -BaumfilterDie Option wird verwendet, um einen Befehl anzugeben, der auf jedem Baum im Zweig ausgeführt wird.
    • rm -rfOption wird verwendet, um das zu löschenDatei1.txt" Datei:


Notiz: Wenn die Datei in einigen Commits nicht vorhanden ist, führen Sie das „“ ausRM -DateinameDie Option funktioniert nicht für Bäume und Commits.

Schritt 4: Änderungen überprüfen

Stellen Sie zuletzt sicher, ob die Datei durch Anzeigen des Inhalts des Repositorys entfernt wurde:

$ ls


So verwenden Sie den Befehl „Git Filter-Branch“ mit der Option "-index-filter"?

Wenn der Benutzer den Index des Repositorys und nicht den gesamten Zweig ändern möchte, ist die “Git Filter-Branch -index-FilterDer Befehl kann verwendet werden. Dies kann nützlich sein, um bestimmte Dateien aus dem Index zu entfernen.

Schritt 1: Dateien von Repository anzeigen

Führen Sie den folgenden Befehl aus, um die verfügbaren Dateien des aktuellen Repositorys aufzulisten:

$ git ls-Files


Das folgende Bild zeigt die Liste der Dateien an. Wählen Sie die gewünschte Datei aus, die Sie aus dem Index entfernen möchten. Zum Beispiel haben wir das ausgewähltDatei4.txt" Datei:


Schritt 2: Entfernen Sie die Datei aus dem Index

Entfernen Sie dann die ausgewählte Datei aus dem Index, indem Sie den folgenden Befehl schreiben:

$ git filter-branch-Index-filter 'git rm-cached-ignore-unmatch Datei4.txt'


Hier:

    • -Indexfilter”Gibt den Befehl an, mit dem der Index filtert wird.
    • -zwischengespeichertOption entfernt/löscht Dateien aus dem Index.
    • -Ignorieren Sie die Unmatch”Ignoriert alle Fehler:



Schritt 3: Änderungen überprüfen

Führen Sie schließlich den angegebenen Befehl aus, um sicherzustellen, dass die Datei aus dem Index gelöscht wurde:

$ git ls-Files


So verwenden Sie den Befehl „Git Filter-Branch“ mit der Option "-msg-Filter"?

Manchmal möchten Benutzer die spezifische Commit -Nachricht aus dem Protokollverlauf neu schreiben. Zu diesem Zweck die “Git filter -branch -f -msg -filter 'sed' s /// g '' --all" kann verwendet werden.

Schritt 1: Begehörige Geschichte anzeigen

Überprüfen Sie zunächst das Commit SHA Hash -Geschichte des aktuellen Arbeitsrepositorys:

$ Git -Protokoll -Einmal


Im folgenden Screenshot ist die Festungsgeschichte zu sehen. Wählen Sie die gewünschte Commit -Nachricht, die umgeschrieben werden muss. Zum Beispiel haben wir das ausgewähltDatei2 hinzugefügtMeldung begehen:


Schritt 2: Schreiben Sie die Commit -Nachricht um

Führen Sie als nächstes den folgenden Befehl aus, um die ausgewählte Commit -Nachricht neu zu schreiben:

$ git filter-branch -f--msg-filter 'sed'


Hier:

    • -MSG-FilterDie Option wird verwendet, um die Commit -Nachricht zu ändern.
    • -F”Option führt die Operation mit einer gewaltsamen Ausführung durch.
    • sedBefehlsbefehl nach der Zeichenfolge "Datei2 hinzugefügt”In der Commit -Nachricht und ersetzt sie durch die“Datei hinzufügen2" Nachricht.
    • - -alle”Option wendet den Filter auf alle Zweige im Repository an:



Schritt 3: Überprüfung

Überprüfen Sie zuletzt die Änderungen, indem Sie das Commit in der Geschichte überprüfen:

$ Git -Protokoll -Einmal


Es kann beobachtet werden, dass die alte Commit -Nachricht durch die neue Commit -Nachricht ersetzt wurde:


Das ging alles um das "Git Filter-BranchBefehl in Git.

Abschluss

Der "Git Filter-BranchDer Befehl ”Der Befehl wird verwendet, um die Festschreibung eines bestimmten Zweigs oder aller Zweige in einem Repository umzuschreiben. Dadurch können Benutzer verschiedene Vorgänge bei Commits ausführen, z. B. das Entfernen von Dateien, das Ändern von Commit -Nachrichten usw. Darüber hinaus kann dies verwendet werden, um ein bestimmtes Repository zu bereinigen und vertrauliche Informationen zu entfernen. Dieser Artikel erläuterte den Befehl „Git Filter-Branch“ und seine Filteroptionen.