Heim > Technologie-Peripheriegeräte > IT Industrie > Ein Leitfaden für Git Interactive Rebase mit praktischen Beispielen

Ein Leitfaden für Git Interactive Rebase mit praktischen Beispielen

William Shakespeare
Freigeben: 2025-02-10 15:12:12
Original
225 Leute haben es durchsucht

A Guide to Git Interactive Rebase, with Practical Examples

git interaktive Basisänderung: Ein leistungsstarkes Tool zur Verbesserung der Entwicklungseffizienz

commit Git Version Control ist in der Toolbox moderner Entwickler Standard geworden. Befehle wie push, pull und

sind seit langem zu Muskelgedächtnis geworden. Relativ gesehen verstehen nur wenige Entwickler die "fortgeschritteneren" Funktionen in Git und den enormen Wert dieser Funktionen! In diesem Artikel wird eines der leistungsstärksten Tools in Git - "Interactive Rebase" - untersucht.

Kernpunkte
  • Interactive Rebase ist ein leistungsstarkes Git-Tool, mit dem Entwickler eine gut strukturierte Festschreibung erstellen können, wodurch die Code-Basis von Projekten leichter zu lesen und zu verstehen ist.
  • Interactive Rebase kann verwendet werden, um alte Commit -Informationen zu bearbeiten, Commits zu löschen, mehrere Commits zusammenzufassen, Commits zu reparieren, alte Commits zu reparieren und alte Commits für die Bearbeitung zu teilen.
  • Es ist wichtig, die interaktive Rebase nicht für Commits zu verwenden, die mit Kollegen im Remote -Repository geteilt wurden, wie es die Geschichte neu schreiben wird. Stattdessen sollten Sie es verwenden, um lokale Commits zu beseitigen, bevor Sie sie in die Teamabteilung verschmelzen.
  • Zu den grundlegenden Mechanismen interaktiver Basisoperationen gehören das Identifizieren des zu bedienenden Einreichungsverlaufs -Teils, die Start der Sitzung mit dem Befehl git rebase -i und dann die erforderliche Aktion im Fenster "Open Editor".
  • Interactive Rebase kann verwendet werden, um alte Commit -Informationen zu bearbeiten, unnötige Commits zu löschen und mehrere Commits in einen zu verschmelzen, wodurch die Verlaufsgeschichte optimiert und gereinigt wird.

Warum interaktive Rebase Teil jedes Entwickler -Toolbox sein

Kurz gesagt, es ist keine Übertreibung zu sagen, dass eine interaktive Rebase Ihnen dabei helfen kann, ein besserer Entwickler zu werden, indem Sie in Ihrem Projekt eine saubere und gut strukturierte Feststellungsgeschichte erstellen können.

Warum ist eine gut strukturierte Einreichungsgeschichte wichtig? Stellen Sie sich das Gegenteil vor: In einer schwer lesenden Einreichungsgeschichte wissen Sie nicht, was die jüngsten Änderungen Ihres Kollegen tatsächlich getan haben. In Projekten wie diesem wird es immer mehr "dunkle Ecken" geben, und Sie kennen nur den kleinen Teil Ihrer Teilnahme.

Vergleichen Sie es mit einer sauberen und gut strukturierten Festschaffungshistorie: Es hilft, die Codebasis des Projekts lesbar und und

zu verstehen. Dies ist ein notwendiger Teil eines gesunden, dauerhaften Programms!

Was kann interaktive Basisänderungen für Sie tun Interactive Rebase hilft Ihnen, Ihre Commit -Geschichte zu optimieren und zu beseitigen. Es deckt viele verschiedene Anwendungsfälle ab, von denen einige es Ihnen ermöglichen, Folgendes zu tun:

  • Informationen zur alten Einreichung bearbeiten
  • löschen Sie die Einreichung
  • Multiply Multiple Commits
  • zusammenführen/kombinieren
  • Submission
  • neu
  • alte Komitee fix
  • Split/Reöffnung des alten Commits zur Bearbeitung

Wann kann interaktive Rebase verwendet werden (und wenn nicht!)

Wie einige andere Git-Tools, die interaktiv "Geschichte neu schreiben" neu aufschreiben. Dies bedeutet, dass dieser Teil der Lit-Geschichte, wenn Sie interaktive Rebase-Operationen verwenden, um eine Reihe von Commits zu betreiben, von : Der SHA-1-Hash des Komitees wird sich ändern. Sie sind sozusagen brandneue Komitsobjekte. Die Tatsache, dass

eine einfache, aber wichtige Regel erfordert, muss befolgt werden: Verwenden Sie keine interaktiven Neubasen (oder andere Tools, um die Geschichte neu zu schreiben) für Commits, die Sie mit Kollegen im Remote -Repository geteilt haben. Verwenden Sie es stattdessen, um Ihre eigenen lokalen Commits zu beseitigen - zum Beispiel in einer Ihrer eigenen Feature -Zweige - und fusionieren Sie sie dann in die Teamabteilung.

Grundmechanismus des interaktiven Basisbetriebs

Obwohl interaktive Wiederherstellungen für viele verschiedene Dinge verwendet werden können, ist ihr grundlegender Workflow immer der gleiche. Sobald Sie einen festen Verständnis für diesen grundlegenden Mechanismus haben, verliert die interaktive Rebase seine „komplexe und mysteriöse“ Atmosphäre und wird zu einem wertvollen und benutzerfreundlichen Tool in Ihrer Toolbox.

Schritt 1: Wo solltest du die Sitzung starten?

Die erste Frage, die Sie beantworten müssen, lautet: "Welchen Teil der Ausschusses Geschichte möchte ich betreiben?" Lassen Sie uns ein praktisches Beispiel geben, nehmen wir an, wir möchten die alten Commit -Informationen bearbeiten (genau das werden wir später in der Praxis tun).

Unsere Startsituation ist in der folgenden Abbildung angezeigt. Wir bearbeiten die alten Einreichungsinformationen durch interaktive Veränderungsbasis.

Um die Commit -Informationen in C2 ändern zu können, müssen wir die interaktive Rebase -Sitzung in seinem übergeordneten Commit (oder früher, wenn Sie es vorziehen) starten. In diesem Beispiel werden wir C1 als Ausgangspunkt für die interaktive Rebase -Sitzung verwenden. A Guide to Git Interactive Rebase, with Practical Examples

Schritt 2: Starten Sie die eigentliche Sitzung!

Eine tatsächliche Sitzung starten ist sehr einfach:

Wir verwenden den Befehl

mit dem
<code>$ git rebase -i HEAD~3</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Flag (weist darauf hin, dass wir wirklich "interaktiv" sind) und geben das grundlegende Komitee an (das wir im ersten Schritt oben entwickelt haben). In diesem Beispiel habe ich

verwendet, um ein Commit festzulegen, das "hinter Head Commits 3 Commits zurückbleibt". Alternativ könnte ich auch einen bestimmten SHA-1-Hash bereitstellen. -i git rebase Schritt 3: Sagen Sie Git, was Sie tun möchten HEAD~3

Nach dem Start der interaktiven Rebase -Sitzung sehen Sie ein Editor -Fenster, in dem Git eine Reihe von Commits auflistet - von dem neuesten Commit bis (aber nicht enthalten). .

In diesem Schritt müssen zwei Punkte beachtet werden: A Guide to Git Interactive Rebase, with Practical Examples

  1. Einreichungen sind in umgekehrter Reihenfolge aufgeführt! Wir erwarten, dass die neuesten Einreichungen, die oben in erscheinen, unten in der Liste der Liste erscheinen. Mach dir keine Sorgen: Ihr Git -Repository ist intakt! ? Erinnern Sie sich, dass wir einen interaktiven Änderungsbasisoperation durchführen, wodurch Git am Ende der Operation von alt nach neu angewendet werden muss. Nehmen Sie in diesem Editor -Fenster keine tatsächlichen Änderungen vor! Während Sie möglicherweise versucht sind, die Commit -Informationen direkt in diesem Editor -Fenster zu ändern (schließlich möchten wir genau das tun ...), müssen Sie geduldig sein. Hier sagen wir nur Git, was wir tun wollen - anstatt die tatsächlichen Änderungen vorzunehmen. Ich werde das bald in der Praxis demonstrieren!
  2. Mit dieser theoretischen Übersicht tauchen wir zusammen in einige praktische Fälle zusammen! Informationen zur alten Einreichung bearbeiten
Einer der beliebtesten Anwendungsfälle für die interaktive Rebase ist, dass Sie alte Einsendungen anschließend bearbeiten können. Möglicherweise wissen Sie, dass

auch die eingereichten Informationen ändern können - dies gilt jedoch nur für die neuesten

-Antragungen. Für jedes Engagement, das älter ist, müssen wir interaktive Wiedergebäude verwenden!

Schauen wir uns ein bestimmtes Szenario an. Im Folgenden finden Sie ein Bild der Fehlereinreichungsinformationen, die korrigiert werden müssen.

git commit --amend

Hinweis: Für einen besseren Überblick und eine bessere Visualisierung habe ich den Tower Git -Desktop -Client in einigen Screenshots verwendet. Sie brauchen keinen Turm, um diesem Tutorial zu folgen.

A Guide to Git Interactive Rebase, with Practical Examples Angenommen, wir möchten die Nachricht für die aktuelle Einreichung mit dem Titel "Die Markup -Struktur im Index optimieren ..." bearbeiten.

Unser erster Schritt besteht darin, den grundlegenden Komitee dieser interaktiven Rebase -Sitzung zu bestimmen. Da wir (zumindest) zum Elternbeschwerden unseres "schlechten Apple" -Knits zurückkehren müssen, verwenden wir (drei Commits hinter Head Commits, d. H. Das Commit mit dem Titel "Change Headline ...") als Ausgangspunkt für Die Sitzung:

Nachdem Sie diesen Befehl ausgeführt haben, öffnet und zeigt Ihr bevorzugter Editor die gerade ausgewählte Commits (durch Bereitstellung eines grundlegenden Commits).

HEAD~3

<code>$ git rebase -i HEAD~3</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Eine Erinnerung: Während Sie möglicherweise versucht sind, dies zu tun, werden wir die Einreichungsinformationen hier nicht ändern. Wir verwenden nur das "Operation Keyword"

, um die entsprechenden Zeilen von

zu markieren. In unserem Fall möchten wir das Komitee außer Kraft setzen (was bedeutet, dass wir die Commit -Informationen ändern möchten, aber den Rest des Commits behalten möchten).

A Guide to Git Interactive Rebase, with Practical Examples In der Tat sind alle verfügbaren Aktionschlüsselwörter am Ende dieses Fensters angegeben - so dass sich nichts erinnern muss!

Sobald Sie das Schlüsselwort durch Ihr bevorzugter Aktionsschlüsselwort (dh "Commits so wie es ist" ersetzt werden), speichern und schließen Sie das Fenster einfach.

Danach wird ein neues Editor -Fenster mit den aktuellen Commit -Informationen geöffnet. Schließlich können wir das tun, was wir am Anfang tun wollten: Bearbeiten Sie diese alte Commit -Nachricht!

A Guide to Git Interactive Rebase, with Practical Examples

Nachdem wir Änderungen vorgenommen und das Editor -Fenster gespeichert und schließen, ist die interaktive Rebase -Sitzung abgeschlossen - unsere Einreichungsinformationen wurden aktualisiert! ?

unerwünschte Einreichungen löschen

Mit

Interactive Rebase können Sie auch alte Commits aus der Geschichte löschen, die Sie nicht benötigen (oder nicht wollen). Stellen Sie sich vor, Sie geben versehentlich ein persönliches Passwort in Ihre jüngste Einreichung ein: In den meisten Fällen sollten solche sensiblen Informationen nicht in der Codebasis enthalten sein.

A Guide to Git Interactive Rebase, with Practical Examples

Denken Sie auch daran, dass das ledigliche Löschen der Informationen und das Wiedergabeteilnehmer Ihr Problem nicht wirklich löst: Es bedeutet, dass das Passwort im Repository weiterhin als altes Commit gespeichert wird. Was Sie wirklich wollen, ist,

diese Daten vollständig sauber aus dem Repository zu löschen! Lassen Sie uns zunächst den Grundausschuss für die interaktive Rebase -Sitzung bestimmen. Da wir zumindest mit dem übergeordneten Commit des falschen Commit beginnen müssen, verwenden wir die "Markup -Struktur optimieren" als unsere Grundlage:

Bitte beachten Sie, dass ich diesmal den spezifischen SHA-1-Hash im Befehl
<code>$ git rebase -i HEAD~3</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
verwendet habe. Natürlich kann ich zusätzlich zu Hash, auch

, um dieses Commit zu bewältigen. git rebase -i HEAD~2 Nachdem wir diesen Befehl ausgeführt haben, werden wir erneut eine Commit -Liste sehen.

A Guide to Git Interactive Rebase, with Practical Examples Diesmal verwenden wir das Schlüsselwort

Aktion, um unerwünschte Commits loszuwerden. In diesem Sonderfall können wir einfach die gesamte Zeile vom Herausgeber löschen. Wenn eine Zeile beim Speichern und Schließen des Fensters nicht mehr vorhanden ist (darstellt ein Commit), löscht Git das entsprechende Commit.

drop Was auch immer Sie auswählen, nachdem Sie das Editor -Fenster gespeichert und geschlossen haben, wird die Einreichung aus Ihrem Repository -Verlauf gelöscht!

Führen Sie mehrere Commits in ein

zusammen Ein weiterer Anwendungsfall für interaktive Rebase ist, wenn Sie mehrere separate Commits

in einen zusammenführen möchten. Bevor wir uns mit der Arbeit eintauchen, lassen Sie uns ein paar Minuten damit verbringen, zu besprechen, wann oder warum es wertvoll sein kann.

im Allgemeinen ist es in den meisten Fällen keine gute Strategie, ein Commit "größer zu machen" (durch Kombinieren mehrerer Commits zu einem). Die allgemeine Faustregel lautet, das Commit so klein wie möglich zu halten, da "kleiner" "leichter zu lesen und zu verstehen" bedeutet. In einigen Fällen ist dies jedoch immer noch sinnvoll. Hier sind zwei Beispiele:

  • Stellen Sie sich vor, Sie haben etwas nicht mit dem alten Commit bemerkt. Sie können dann einen neuen -Podus erstellen, um das Problem zu beheben. In diesem Fall ist es sinnvoll, diese Commits in einen zu verschmelzen: Schließlich sind neuere Commits nur ein "anhaltender", um Probleme zu beheben, die nicht hätten existieren sollen. Durch die Kombination dieser Commits scheint es überhaupt kein Problem zu geben!
  • Ein weiteres Beispiel ist, wenn Sie feststellen, dass Sie ein bisschen zu detailliert machen. Es ist gut, kleine Commits zu machen, aber die Fülle Ihrer Feststellungsgeschichte mit vielen unnötigen kleinen -Ver Commits bedeutet, dass das Ziel überschritten wird.
  • Die Grundprinzipien in beiden Beispielen sind gleich: Durch die Kombination von zwei (oder mehr) Commits, die ein Commit gewesen wären, erstellen Sie eine sauberere, lesbarere Festungsgeschichte!

Lassen Sie uns ein praktisches Beispiel gemeinsam abschließen und die in dem folgende Bild gezeigte Situation als Startsituation verwenden.

A Guide to Git Interactive Rebase, with Practical Examples Nehmen wir an, dass es semantisch sinnvoller ist, diese beiden Commits in einen Commit zu verschmelzen. Mit dem interaktiven Rebase -Tool können wir dies tun:

squash Sie haben sich an das gewöhnt, was los ist: Ein Editorfenster wird mit einer Liste von Einsendungen geöffnet.

<code>$ git rebase -i HEAD~3</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe erwähnt, dass wir in diesem Fall das Schlüsselwort A Guide to Git Interactive Rebase, with Practical Examples Betrieb verwenden werden. Es gibt eine wichtige Sache zu wissen, wie

funktioniert:

Die Zeilen, die Sie mit Schlüsselwörtern gekennzeichnet haben, verschmelzen mit den Zeilen direkt darüber! squash Dies erklärt, warum ich Zeile 2 mit dem Schlüsselwort squash in unserem Beispiel markiert habe. Nach dem Speichern und Schließen dieses Fensters wird ein neues Fenster geöffnet. Dies liegt daran, dass wir durch die Kombination mehrerer Commits natürlich ein neues Komitee erstellen werden. Und diese Einreichung erfordert auch Einreichungsinformationen, genau wie jede andere Einreichung! squash

Was Sie im obigen Screenshot sehen, ist das, was Git für uns vorbereitet hat: Es kombiniert die Einreichungsinformationen des entsprechenden Original -Commits mit einigen Kommentaren. Fühlen Sie sich frei, alte Nachrichten zu löschen, fangen Sie von vorne - oder fügen Sie sie weiter und fügen Sie weitere Informationen hinzu. A Guide to Git Interactive Rebase, with Practical Examples

Nachdem wir dieses Editor -Fenster gespeichert und geschlossen haben, können wir stolz sagen: Früher waren es zwei separate Commits, aber jetzt ist es ein Commit!

Verwenden Sie die leistungsstarken Funktionen der interaktiven Basisänderung

Ich hoffe, Sie sind sich einig, dass das interaktive Rebase -Tool von Git sehr wertvoll ist! Als Entwickler müssen wir uns um eine saubere und klare Festungsgeschichte bemühen. Dies ist ein Schlüsselfaktor, um die Codebasis gesund und leicht zu verstehen (für Ihre Teamkollegen und sich selbst, nach einer Weile vergangen).

Wenn Sie mehr wissen möchten, empfehle ich das "Git First Aid Kit". Dies ist eine (kostenlose) kurze Videosammlung, die Ihnen zeigt, wie Sie Fehler in Git aufräumen und rückgängig machen.

Viel Spaß!

git interaktive Änderung Basis FAQ (FAQ)

Was ist der Unterschied zwischen Git -Rebase und Git Merge?

Git -Rebase und Git -Merge sind zwei verschiedene Möglichkeiten, Änderungen von einem Zweig in einen anderen zu integrieren. Git Merge ist eine Möglichkeit, Code direkt aus zwei verschiedenen Zweigen zu kombinieren. Es schafft ein neues Commit in der Geschichte und bewahrt die chronologische Ordnung der Commits. Git Rebase hingegen ist eine Möglichkeit, eine Reihe von Commits zu einem neuen Grundkenntnis zu bewegen oder zu kombinieren. Es ist wie zu sagen "Ich möchte die Arbeit anderer Leute zu meinen Veränderungen hinzufügen". Mit anderen Worten, Sie können Änderungen an den aktuellen Zweig oben in einem anderen Zweig platzieren.

Wie kann man Git -Wiedergeburt rückgängig machen?

Wenn Sie die Git -Rebase rückgängig machen möchten, können Sie den Befehl git reflog verwenden, um das Commit zu finden, zu dem Sie zurückkehren möchten, und dann den Befehl git reset --hard HEAD@{number} verwenden. Der Befehl git reflog zeigt eine Liste jeder Änderung am Kopf an. Mit dem Befehl git reset können Sie den aktuellen Kopf auf den angegebenen Zustand einstellen.

Was ist der Zweck von Git Interactive Rebase?

Mit

Git Interactive Rebase können Sie die Commits auf verschiedene Weise ändern, z. B. Bearbeiten, Löschen und Komprimierung. Sie können nicht nur die Commit -Informationen ändern, sondern auch den tatsächlichen Code ändern (wenn Sie einen Fehler machen). Dies ist ein leistungsstarkes Tool, das Ihnen die vollständige Kontrolle über die Einreichungshistorie Ihres Projekts gibt.

Wie verwendet ich die Einreichung zwischen Variable-Basis-Komprimierung mit Git-Variablenbasis?

Komprimierung ist das Zusammenführen mehrerer Commits in ein Commit. In Git können Sie das Komitee mit dem Befehl git rebase -i komprimieren, gefolgt vom Commit -Hash zum Komprimieren. Im offenen Texteditor können Sie das Commit markieren, das Sie komprimieren möchten, indem Sie pick durch squash oder s ersetzen.

Was sind die Risiken der Verwendung interaktiver Rebase Git?

Während Git Interactive Rebase ein leistungsstarkes Werkzeug ist, kann es gefährlich sein, wenn sie unsachgemäß verwendet. Es schreibt die Festungsgeschichte neu, was zu Problemen führen kann, wenn Sie mit einer öffentlichen Niederlassung zu tun haben, mit der auch andere zu tun haben. Es wird empfohlen, es für lokale Zweige zu verwenden, die noch nicht vorangetrieben wurden.

Wie kann man Konflikte während der Git -Änderungsbasis lösen?

Zusammenstöße können während des Rebaseprozesses auftreten. Git wird innehalten und es Ihnen ermöglichen, diese Konflikte vor dem Fortsetzung zu lösen. Sie können widersprüchliche Änderungen durch Bearbeiten von Dateien beheben und dann git add verwenden, um behobene Dateien hinzuzufügen, um Konflikte zu beheben. Nachdem alle Konflikte gelöst sind, können Sie die Basis weiterhin mit git rebase --continue ändern.

Kann ich mit Git Interactive Change Base das Commit aufteilen?

Ja, Sie können einen Commit mit Git Interactive Rebase in kleinere Commits aufteilen. Dies ist sehr nützlich, wenn Sie mehrere Änderungen in einem Commit vornehmen, dann jedoch entscheiden, dass sie getrennte Commits sein sollten.

Wie bearbeiten Sie die Einreichungsinformationen mithilfe der Git Interactive Change Basis?

Sie können die Einreichungsinformationen während der interaktiven Wiederherstellung bearbeiten. Ersetzen Sie in der Einreichungsliste pick durch reword oder r, um die zu bearbeitende Einreichung zu markieren. Beim Fortsetzung öffnet Git einen Texteditor für jede mit reword gekennzeichnete Einreichung, sodass Sie die Einreichungsinformationen ändern können.

Was ist der Unterschied zwischen Git Rebase und Git Pull?

Git pull ist ein Befehl, der Änderungen von einem Remote -Repository entgegennimmt und in den aktuellen Zweig verschmilzt. Andererseits ist Git rebase ein Befehl, der eine Reihe von Commits zu einem neuen Grundkommitas bewegt oder kombiniert. Während beide Befehle für Integrationsänderungen verwendet werden, werden sie unterschiedlich durchgeführt.

Kann ich Git Interactive Rebase verwenden, um die Reihenfolge der Commits zu ändern?

Ja, Sie können mit Git Interactive Rebase die Reihenfolge der Commits ändern. In der Commit -Liste können Sie einfach die Reihenfolge der Zeilen ändern, um die Reihenfolge der Commits zu ändern. Dies ist sehr nützlich, wenn Sie Ihre Feststellungsgeschichte logischer oder klarer machen möchten.

Das obige ist der detaillierte Inhalt vonEin Leitfaden für Git Interactive Rebase mit praktischen Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage