Heim > Entwicklungswerkzeuge > Idiot > So löschen Sie historische Commits in Git

So löschen Sie historische Commits in Git

PHPz
Freigeben: 2023-04-26 09:51:26
Original
8979 Leute haben es durchsucht

In den letzten Jahren ist Git als leistungsstarkes Tool zur Versionskontrolle bei Entwicklungsteams immer beliebter geworden. Allerdings kann es bei der Verwendung von Git manchmal zu fehlerhaften Commits kommen, die sich negativ auf das Projekt auswirken können. Das Löschen dieser historischen Commits ist zu einem Problem geworden, mit dem Git-Benutzer häufig konfrontiert sind. In diesem Artikel erfahren Sie, wie Sie historische Commits in Git löschen.

1. Git-Einreichungsverlauf

Der Git-Einreichungsverlauf besteht aus vielen Einsendungen. Immer wenn Sie in Git einen Commit durchführen, wird ein neuer Commit erstellt. Jede Einreichung verfügt über eine eigene Kennung (SHA) und enthält Informationen wie den Autor der Einreichung, das Datum und die Beschreibung der Einreichung.

Sie können den Commit-Verlauf in Git über die Git-Befehlszeile oder das Git-Client-Tool anzeigen. Über die Git-Befehlszeile können Sie beispielsweise den Commit-Verlauf dieses Projekts mit dem folgenden Befehl anzeigen:

git log
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl listet alle Commits im aktuellen Zweig in umgekehrter Reihenfolge auf. Jeder Commit hat seinen eigenen SHA, den Namen und die E-Mail-Adresse des Committers, das Commit-Datum und die Commit-Nachricht.

2. Warum historische Einreichungen löschen? Im Prozess der kollaborativen Entwicklung gibt es viele menschliche Faktoren, die zur Entstehung fehlerhafter Einreichungen führen. „Schlechte Einsendungen“ sind Einsendungen, die Fehler, Sicherheitslücken, vertrauliche Informationen usw. enthalten können. Wenn diese fehlerhaften Commits in den Hauptzweig integriert wurden, kann dies negative Auswirkungen auf andere Teile des Projekts haben.

Wenn Sie darüber hinaus Inhalte angeben, die andere vor der Übermittlung des Codes nicht sehen sollen, wie z. B. Passwörter, API-Schlüssel und andere vertrauliche Informationen, können diese nach der Übermittlung offengelegt werden. Derzeit ist das Löschen historischer Übermittlungen eine Möglichkeit, die Privatsphäre der Benutzer zu schützen.

3. So löschen Sie historische Commits in Git

In Git gibt es zwei Möglichkeiten, historische Commits zu löschen: den Verlauf neu zu schreiben und den Filtermechanismus von Git zu verwenden.

Verlauf neu schreiben
  1. Das Umschreiben des Verlaufs wird tatsächlich durch Ändern historischer Commits erreicht. Dies bedeutet, dass Änderungen und Neuanordnungen an bereits veröffentlichten Commits vorgenommen werden. Im Folgenden finden Sie die Schritte zum Löschen des Git-Commit-Verlaufs:

(1) Verwenden Sie den folgenden Befehl, um den Commit-Verlauf anzuzeigen:

git log
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

(2) Suchen Sie den SHA des Commits, den Sie löschen möchten, und zeichnen Sie ihn auf.

(3) Verwenden Sie den folgenden Befehl, um den Verlauf neu zu schreiben. Ersetzen Sie in diesem Befehl SHA durch den SHA des Commits, den Sie löschen möchten:

git rebase -i SHA^
Nach dem Login kopieren

Dieser Befehl öffnet einen Editor mit einer Liste aller Commits seit dem letzten Commit des ausgewählten Commits.

(4) Ändern Sie das „Pick“ vor dem Commit, das Sie löschen möchten, in „Drop“ oder kommentieren Sie die Zeile mit einem Nummernzeichen aus. Speichern und schließen Sie den Editor.

(5) Führen Sie den folgenden Befehl aus, um das Überschreiben der Commits in Git zu erzwingen:

git push --force
Nach dem Login kopieren

Abschließend können Sie mit dem folgenden Befehl überprüfen, ob Sie den Commit-Verlauf erfolgreich gelöscht haben:

git log
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie den Filtermechanismus von Git
  1. In Git, der Befehl filter-branch, kann Ihnen beim Löschen des Commit-Verlaufs helfen. Dieser Befehl kopiert das gesamte Repository und wendet den angegebenen Filter auf jedes Commit an. Im Folgenden sind die Schritte aufgeführt, um den Filtermechanismus von Git zum Löschen des Git-Commit-Verlaufs zu verwenden:

(1) Verwenden Sie den folgenden Befehl, um ein Kopie-Repository zu erstellen:

git clone --mirror <Git URL>
Nach dem Login kopieren

(2) Verwenden Sie den folgenden Befehl, um das Kopie-Repository aufzurufen:

cd <repository name>.git
Nach dem Login kopieren

(3) Verwenden Sie den folgenden Befehl, um historische Commits zu löschen:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <filename>" --prune-empty --tag-name-filter cat -- --all
Nach dem Login kopieren

Dieser Befehl wird verwendet, um die historischen Commits der Datei mit dem Namen zu löschen. Dieser Befehl kann nach Bedarf geändert werden. Hier wird --tag-name-filter cat zum Korrigieren von Tags verwendet. Abschließend wird dieser Befehl auf alle Zweige angewendet.

(4) Verwenden Sie den folgenden Befehl, um die Änderungen in das Git-Repository zu übertragen:

git push --all --force
Nach dem Login kopieren

Abschließend können Sie mit dem folgenden Befehl überprüfen, ob der Commit-Verlauf erfolgreich gelöscht wurde:

git log
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

IV Zusammenfassung

Durch Umschreiben des Mit dem Verlauf oder der Verwendung des Git-Filtermechanismus können Sie historische Commits in Git löschen. Bevor Sie jedoch den Commit-Verlauf löschen, sollten Sie sorgfältig darüber nachdenken und sicherstellen, dass alle Teammitglieder die Auswirkungen der Änderung verstehen. Darüber hinaus sollten Git-Repositorys regelmäßig bereinigt werden, bevor Änderungen zusammengeführt werden, um den Speicheraufwand zu reduzieren.

Das obige ist der detaillierte Inhalt vonSo löschen Sie historische Commits in Git. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage