Git, klare Geschichte

WBOY
Freigeben: 2023-05-25 18:35:38
Original
3282 Leute haben es durchsucht

Git ist ein häufig verwendetes Versionskontrolltool, das in der Projektentwicklung weit verbreitet ist. Während der Projektentwicklung verwenden wir normalerweise verschiedene Git-Befehle zur Versionskontrolle und -verwaltung, einschließlich der Übermittlung von Code, dem Zusammenführen von Zweigen und anderen Vorgängen. In einigen Fällen müssen wir jedoch möglicherweise den Git-Verlauf löschen, z. B. um vertrauliche Informationen oder unnötige Commit-Datensätze zu löschen. Im Folgenden besprechen wir, wie man den Git-Verlauf löscht.

1. Backup

Bevor wir den Vorgang zum Löschen des Git-Verlaufs durchführen, müssen wir ein Backup erstellen, um Fehler oder unerwartete Situationen im Vorgang zu verhindern. Es ist wichtig, die aktuelle Codebasis an einem sicheren Ort zu sichern, damit wir unsere Codebasis bei Bedarf wiederherstellen können. Wir können den Verpackungsbefehl von Git verwenden, um das Projekt in einer komprimierten Datei zu sichern, zum Beispiel:

git archive --format zip --output backup.zip HEAD
Nach dem Login kopieren

Dieser Befehl packt die aktuelle Codebasis in eine ZIP-Datei und speichert sie in backup.zip.

2. Löschen Sie den Verlauf

  1. Verwenden Sie den Befehl, um den Verlauf einer einzelnen Datei zu löschen

Löschen Sie die Verlauf einer einzelnen Datei Die Aufzeichnung ist ein relativ einfacher Vorgang, um dies zu erreichen:

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty -- --all
Nach dem Login kopieren

Dieser Befehl löscht die Zieldatei vollständig aus dem Verlaufsdatensatz. Unter diesen stellt path/to/file den zu löschenden Dateipfad dar. path/to/file 表示要清除的文件路径。

  1. 使用命令清除 commit 的历史纪录

有时候,我们需要删除某个 commit 及其之后的历史纪录。为此,我们可以使用 Git 的 rebase 命令来实现。具体来说,我们需要执行以下步骤:

1)使用以下命令展示项目中所有的 commit

$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
Nach dem Login kopieren

这个命令会显示项目中所有的 commit 记录。

2)决定要清除的 commit 的 SHA 值

我们需要查找要删除 commit 的 SHA 值,可以从下面的 commit 日志中获取:

commit 55d4d98de4caf2ac1a8f783624c58e533500f3d7
Author: John Doe <john@doe.com>
Date:   Fri Apr 30 16:01:07 2021 -0700

    Added new feature
Nach dem Login kopieren

上述示例中的 commit SHA 值是 55d4d98de4caf2ac1a8f783624c58e533500f3d7.

3)使用以下命令将要清除的 commit 弹出

$ git rebase -i <commit-hash>^
Nach dem Login kopieren

比如,我们要删除 SHA 值为 55d4d98de4caf2ac1a8f783624c58e533500f3d7 的 commit 及其之后的历史纪录,可以执行以下命令:

$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
Nach dem Login kopieren

4)编辑交互窗口以将目标 commit 弹出

在交互模式中,我们需要将需要删除的目标 commit 标记为 “drop”,然后将文件保存退出即可。示例如下所示:

pick 44a0c2c this is an invalid commit, which should be removed
drop 55d4d98 Added new feature
Nach dem Login kopieren

在上例中,55d4d98 历史纪录将被删除,而 44a0c2c

    Verwenden Sie den Befehl, um den Commit-Verlauf zu löschen.

    Manchmal müssen wir einen Commit und seinen nachfolgenden Verlauf löschen. Dazu können wir den Befehl rebase von Git verwenden. Konkret müssen wir die folgenden Schritte ausführen:

    1) Verwenden Sie den folgenden Befehl, um alle Commits im Projekt anzuzeigen

    $ git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ./' --tag-name-filter cat -- --all
    Nach dem Login kopieren

    Dieser Befehl zeigt alle Commit-Datensätze im Projekt an .

    2) Bestimmen Sie den SHA-Wert des zu löschenden Commits.

    Wir müssen den SHA-Wert des zu löschenden Commits ermitteln, der aus dem Commit-Protokoll abgerufen werden kann unten:

    $ git push origin --force --all
    Nach dem Login kopieren
    #述#Der COMMIT-SHA-Wert im obigen Beispiel ist 55D4D98DE4CAF2AC1A8F783624C58E533500F3D7 . #Zum Beispiel möchten wir das Commit mit dem SHA-Wert von 55d4d98de4caf2ac1a8f783624c58e löschen 533500f3d7 und dessen nachfolgender Verlauf. Sie können den folgenden Befehl ausführen:

    rrreee

    4) Bearbeiten Sie das interaktive Fenster, um das Ziel-Commit aufzurufen #🎜🎜 ##🎜🎜#Im interaktiven Modus müssen wir markieren Geben Sie den Ziel-Commit, der gelöscht werden muss, als „Drop“ ein, speichern Sie dann die Datei und beenden Sie den Vorgang. Ein Beispiel sieht so aus: #🎜🎜#rrreee#🎜🎜#Im obigen Beispiel wird der 55d4d98-Verlauf gelöscht und der 44a0c2c-Verlauf wird zum neuesten Commit . #🎜🎜##🎜🎜#5) Verwenden Sie den folgenden Befehl, um den alten Verlauf zu löschen #🎜🎜#rrreee#🎜🎜#Dieser Befehl kann den als „Drop“ markierten Commit und die darauf folgenden Commits löschen. #🎜🎜##🎜🎜#6) Zum Remote-Warehouse pushen #🎜🎜##🎜🎜#Schließlich müssen wir das Pushen zum Remote-Warehouse erzwingen, um die historischen Datensätze im Remote-Warehouse zu aktualisieren und die Richtigkeit der historischen Daten sicherzustellen Datensätze: #🎜 🎜#rrreee#🎜🎜#Bitte beachten Sie, dass Sie bei der Ausführung der oben genannten Befehle Vorsicht walten lassen und sicherstellen sollten, dass Sie Ihre Codebasis gesichert haben. Denn einmal gelöscht kann es nicht wiederhergestellt werden. #🎜🎜##🎜🎜#Zusammenfassung#🎜🎜##🎜🎜#In diesem Artikel wird erläutert, wie Sie mit Git den Verlauf löschen. Bevor wir diese Vorgänge durchführen, müssen wir die Folgen historischer Aufzeichnungsvorgänge berücksichtigen und Sicherungen erstellen, um irreversible Verluste zu vermeiden. Gleichzeitig sollten wir versuchen, die Löschung historischer Aufzeichnungen zu vermeiden und sie nur bei Bedarf zu verwenden. #🎜🎜#

    Das obige ist der detaillierte Inhalt vonGit, klare Geschichte. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!