Heim >Entwicklungswerkzeuge >Idiot >Git, klare Geschichte
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
Dieser Befehl packt die aktuelle Codebasis in eine ZIP-Datei und speichert sie in backup.zip.
2. Löschen Sie den Verlauf
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
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
表示要清除的文件路径。
有时候,我们需要删除某个 commit 及其之后的历史纪录。为此,我们可以使用 Git 的 rebase
命令来实现。具体来说,我们需要执行以下步骤:
1)使用以下命令展示项目中所有的 commit
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
这个命令会显示项目中所有的 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
上述示例中的 commit SHA 值是 55d4d98de4caf2ac1a8f783624c58e533500f3d7
.
3)使用以下命令将要清除的 commit 弹出
$ git rebase -i <commit-hash>^
比如,我们要删除 SHA 值为 55d4d98de4caf2ac1a8f783624c58e533500f3d7
的 commit 及其之后的历史纪录,可以执行以下命令:
$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
4)编辑交互窗口以将目标 commit 弹出
在交互模式中,我们需要将需要删除的目标 commit 标记为 “drop”,然后将文件保存退出即可。示例如下所示:
pick 44a0c2c this is an invalid commit, which should be removed drop 55d4d98 Added new feature
在上例中,55d4d98
历史纪录将被删除,而 44a0c2c
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
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#述#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 der55d4d98
-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!