


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
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.
Eine tatsächliche Sitzung starten ist sehr einfach:
Wir verwenden den Befehl
mit dem<code>$ git rebase -i HEAD~3</code>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
In diesem Schritt müssen zwei Punkte beachtet werden:
- 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!
- Mit dieser theoretischen Übersicht tauchen wir zusammen in einige praktische Fälle zusammen! Informationen zur alten Einreichung bearbeiten
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.
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>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).
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! ?
unerwünschte Einreichungen löschen
MitInteractive 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>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.
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 Commitsin 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: 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!

Bleiben Sie über die neuesten technischen Trends mit diesen Top -Entwickler -Newsletters informiert! Diese kuratierte Liste bietet für jeden etwas, von KI -Enthusiasten bis hin zu erfahrenen Backend- und Frontend -Entwicklern. Wählen Sie Ihre Favoriten und sparen Sie Zeit, um nach REL zu suchen

Dieses Tutorial führt Sie durch das Erstellen einer serverlosen Bildverarbeitungspipeline mit AWS -Diensten. Wir werden ein Next.JS -Frontend erstellen, der in einem ECS -Fargate -Cluster eingesetzt wird und mit einem API -Gateway, Lambda -Funktionen, S3 -Eimer und DynamoDB interagiert. Th

Dieses Pilotprogramm, eine Zusammenarbeit zwischen CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal und betätigten, rationalisiert ARM64 CI/CD für CNCF -Github -Projekte. Die Initiative befasst sich mit Sicherheitsbedenken und Leistung


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
