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
git rebase -i
und dann die erforderliche Aktion im Fenster "Open Editor". 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:
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
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).
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.
Eine tatsächliche Sitzung starten ist sehr einfach:
Wir verwenden den Befehl
mit dem<code>$ git rebase -i HEAD~3</code>
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
In diesem Schritt müssen zwei Punkte beachtet werden:
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!
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.
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>
, 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).
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!
Nachdem wir Änderungen vorgenommen und das Editor -Fenster gespeichert und schließen, ist die interaktive Rebase -Sitzung abgeschlossen - unsere Einreichungsinformationen wurden aktualisiert! ?
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.
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>
, 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.
Diesmal verwenden wir das Schlüsselwort
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 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: Lassen Sie uns ein praktisches Beispiel gemeinsam abschließen und die in dem folgende Bild gezeigte Situation als Startsituation verwenden.
Ich habe erwähnt, dass wir in diesem Fall das Schlüsselwort Die Zeilen, die Sie mit Schlüsselwörtern gekennzeichnet haben, verschmelzen mit den Zeilen direkt darüber! 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.
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 -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. Wenn Sie die Git -Rebase rückgängig machen möchten, können Sie den Befehl 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. Komprimierung ist das Zusammenführen mehrerer Commits in ein Commit. In Git können Sie das Komitee mit dem Befehl 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. 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 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. Sie können die Einreichungsinformationen während der interaktiven Wiederherstellung bearbeiten. Ersetzen Sie in der Einreichungsliste 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.
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>
Betrieb verwenden werden. Es gibt eine wichtige Sache zu wissen, wie
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
Verwenden Sie die leistungsstarken Funktionen der interaktiven Basisänderung
git interaktive Änderung Basis FAQ (FAQ)
Was ist der Unterschied zwischen Git -Rebase und Git Merge?
Wie kann man Git -Wiedergeburt rückgängig machen?
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 Wie verwendet ich die Einreichung zwischen Variable-Basis-Komprimierung mit Git-Variablenbasis?
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?
Wie kann man Konflikte während der Git -Änderungsbasis lösen?
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?
Wie bearbeiten Sie die Einreichungsinformationen mithilfe der Git Interactive Change Basis?
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?
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!