Git Commit: Eine Meisterklasse


Laptop auf blauem Hintergrund mit einer Linux-Eingabeaufforderung.
fatmawati achmad zaenuri/Shutterstock.com

Der Git-Commit-Befehl speichert Kopien der Änderungen aus Ihrem Arbeitsverzeichnis in Ihrem Git-Repository. Aber es kann auch verwendet werden, um bestehende Commits zu ändern und Commits rückgängig zu machen.

Eine Grundvoraussetzung für jedes Versionskontrollsystem ist es, verschiedene Dateiversionen für Sie zu speichern. In Git ist der Befehl, der dies tut, commit. Hier ist alles, was Sie wissen müssen.

Was ist ein Commit in Git?

Commits sind eine Reihe von Schnappschüssen, die während des gesamten Lebenszyklus eines Projekts gemacht werden und seine Entwicklungsgeschichte ausmachen. Commits ermöglichen es uns, eine Version des Projekts zu extrahieren, wie es zu verschiedenen Zeitpunkten in der Vergangenheit war. Warum ist das wichtig?

Versionskontrollsysteme (VCSs) werden am häufigsten mit Software-Quellcode und Entwicklungsprojekten verwendet. Sie können jedoch erfolgreich mit jeder Sammlung von Textdateien verwendet werden, z. B. Markdown-Dateien, die Kapitel eines Buches enthalten.

Möglicherweise möchten Sie nicht, dass jede Datei in Ihren Projektverzeichnissen vom VCS verarbeitet wird, daher müssen Sie in der Lage sein, die Dateien zu benennen, die versioniert werden sollen. Dadurch werden sie der Versionskontrollansicht des Projekts hinzugefügt. Sie werden auf Änderungen überwacht.

Eine andere Möglichkeit, dies zu erreichen, ist die Verwendung einer Ignorierliste. Dadurch wird Git mitgeteilt, welche Dateien, Verzeichnisse oder Dateitypen es immer ignorieren soll.

Wenn im Laufe der Zeit neue Dateien zum Projekt hinzugefügt werden, müssen einige dem Versionskontrollsystem hinzugefügt werden. In Git wird dies von der behandelt add Befehl. Eigentlich die add command tut doppelten Dienst, wie wir sehen werden.

Um einen Verlauf der Änderungen, die am Projekt vorgenommen wurden, zu pflegen, bitten Sie Git regelmäßig, einen Snapshot des Status des Projekts zu speichern, indem Sie die commit Befehl. Hier ist die add Der Befehl taucht wieder in unserem Workflow auf. Wir benutzen das add Befehl, um Git mitzuteilen, welche geändert Dateien, die wir in den Snapshot aufgenommen haben möchten. Dann verwenden wir commit um Git anzuweisen, den Snapshot zu erstellen.

Konfigurieren des Commit-Befehls

Informationen über den Commit werden darin gespeichert, so dass man immer wissen kann, wer den Commit wann gemacht hat und was der Commit enthält. Einige dieser Metadaten werden zum Commit-Zeitpunkt erfasst, z. B. die Commit-Nachricht.

Metadaten zur Identität der Mitglieder des Entwicklungsteams können von jedem Benutzer konfiguriert werden, um zu verhindern, dass wiederholt dieselben Informationen bereitgestellt werden.

Verwenden Sie diesen Befehl, um Ihren Namen global für alle Repositories auf Ihrem Computer festzulegen.

git config --global user.name "Dave McKay"

Festlegen des globalen Git-Benutzernamens

Verwenden Sie diesen Befehl, um zu überprüfen, ob Ihr Name festgelegt wurde.

git config --global user.name

Überprüfen des globalen Git-Benutzernamens

Wenn Sie für ein bestimmtes Repository einen anderen Namen verwenden müssen, wechseln Sie in das Verzeichnis des Projekts und verwenden Sie denselben Befehl ohne die --global Möglichkeit.

git config user.name "McKay, David"
git config user.name

Festlegen eines Repository-spezifischen Git-Benutzernamens

Wir haben jetzt einen anderen Standardbenutzernamen für dieses Repository, und unser globaler Name wird weiterhin für andere Repositorys verwendet.

Auf ähnliche Weise können wir eine E-Mail-Adresse entweder global oder für ein einzelnes Repository festlegen, indem wir die einschließen oder weglassen --global Möglichkeit.

git config user.email "[email protected]"
git config --global user.email "[email protected]"
git config user.email
git config --global user.email

Festlegen von globalen und Repository-spezifischen Git-Standardbenutzer-E-Mail-Adressen

Diese Einstellungen werden in Konfigurationsdateien gespeichert. Globale Git-Einstellungen werden in „~/.gitconfig“ gespeichert, und Repository-spezifische Einstellungen werden in der „.git/config“-Datei des Repositorys gespeichert.

Der commit Befehlsreferenzen und verwendet diese Werte während des Betriebs.

Verwenden des Commit-Befehls

Die grundlegende Verwendung der commit Der Befehl besteht darin, die Dateien, die sich im Staging-Bereich befinden, der als Index bezeichnet wird, zu nehmen und sie als Commit im aktuellen zu speichern Zweig des Repositorys.

Ein grundlegendes Commitment

Wir haben ein Projekt mit einer geänderten Datei. Wir verwenden die add Befehl, um die Datei bereitzustellen, und übertragen Sie sie dann. Wir verwenden die -m (Commit-Nachricht) Option, damit wir den Zweck der Änderungen kurz beschreiben können. Wenn wir diese Option nicht verwenden, werden wir zur Eingabe einer Commit-Nachricht aufgefordert, während der Commit stattfindet. Es ist bequemer, einen in der Befehlszeile hinzuzufügen.

git add jibber.c
git commit -m "Updated help text"

Staging und Commit einer einzelnen Datei

Wenn wir die verwenden git log befehlen wir können Überprüfen Sie die Details der Commits in chronologischer Reihenfolge, wobei der neueste Commit ganz oben in der Liste steht.

git log

Überprüfen des Git-Repository-Protokolls

Die Commits werden in angezeigt less.

Der letzte Commit oben im Git-Protokoll

Der Commit wurde mit dem Namen und der E-Mail-Adresse versehen, die wir zuvor angegeben haben, und unsere Commit-Nachricht wird ebenfalls aufgezeichnet.

Auto-Staging-Dateien

Das Bereitstellen vieler Dateien kann einige Zeit in Anspruch nehmen. Ein anderer Ansatz ist die Verwendung von -A (alle) Option mit add.

Dies inszeniert automatisch alle geändert Dateien zusammen mit allen derzeit nicht verfolgt Dateien. Das Staging von nicht getrackten Dateien respektiert die Einstellungen in Ihrer „.gitignore“-Datei. Git stellt keine Dateien bereit, von denen Sie ihm gesagt haben, dass Sie nicht aufgenommen werden möchten. Schließlich sind Dateien im Index, die sich nicht mehr im Arbeitsverzeichnis befinden ENTFERNT aus dem Index.

Ganz einfach, die -A Option kann viel auf einmal passieren. Der --dry-run Option gibt Ihnen eine Vorschau der Änderungen, ohne sie tatsächlich durchzuführen.

git add -A --dry-run

Verwenden von --dry-run zur Vorschau der Dateien, die bereitgestellt und nicht bereitgestellt werden

In unserem Beispiel werden zwei geänderte vorhandene Dateien und zwei neue Dateien bereitgestellt. Lassen Sie uns fortfahren und die verwenden -A Option, bevor wir die verwenden commit Befehl.

git add -A
git commit -m "Enhanced parsing"

Übertragen geänderter und neu erstellter Dateien nach Verwendung der Option add -A

Wir können sehen, dass insgesamt vier Dateien geändert wurden. Zwei davon sind die neu erstellten Dateien, die aufgelistet werden.

Inszenieren und Begehen zugleich

Der commit Befehl hat einen Kleinbuchstaben -a (alle) Optionen. Dadurch werden das Staging und das Committen von Dateien in einem Schritt durchgeführt.

Der commit -a Optionsstufen und Commits geändert bestehende Dateien und entfernt Dateien aus dem Index, wenn sie aus Ihrem Arbeitsverzeichnis entfernt wurden. Es nicht nicht nachverfolgte Dateien automatisch bereitstellen.

Wie add Befehl hat der Commit-Befehl a --dry-run Option, mit der Sie eine Vorschau der Aktionen anzeigen können, bevor Sie sie ausführen.

git commit -a --dry-run

Verwenden der Option commit -a, um Änderungen in der Vorschau anzuzeigen, ohne sie auszuführen

Jetzt führen wir den Befehl aus.

git commit -a --dry-run

Verwenden der Option commit -a zum Bereitstellen und Festschreiben in einem Schritt

Die Dateien werden für uns bereitgestellt und übergeben.

Bindung an einen anderen Zweig

Wenn Sie einige Änderungen an Dateien in Ihrem Arbeitsverzeichnis vorgenommen haben und dann feststellen, dass Sie nicht den richtigen Zweig ausgecheckt haben, müssen Sie Ihre Änderungen an den richtigen Zweig übertragen, ohne den aktuellen Zweig zu beeinträchtigen.

Git hat keinen Befehl zum Festschreiben an einen anderen Zweig. Aber Sie können diese Situation mit ein wenig Git-Geschicklichkeit korrigieren.

Wir werden verwenden das Git stash Befehl, um eine Kopie der Änderungen zu erstellen. Dann checken wir den richtigen Branch aus und wenden die Änderungen aus dem Stash an. Um die gespeicherten Änderungen anzuwenden, verwenden wir die pop Befehl statt der apply Befehl. Der pop Der Befehl wendet die Änderungen an und entfernt sie auch aus dem Stash.

Wir haben einige Änderungen in unseren Repositorys vorgenommen new-parser Zweig. Sie sollen im entstanden sein classic-parser Zweig.

git stash
git checkout classic-parser
git stash pop

Änderungen stashen, einen Branch auschecken und die Änderungen aus dem Stash anwenden

Wir können jetzt a ausführen commitund aktualisieren Sie diesen Zweig.

git commit -a -m "Added pre-parser functions"

Festschreiben der Änderungen, die aus dem Stash abgerufen wurden

Wenn wir zu den zurückkehren new-parser Branch können wir sehen, dass es auf dem neuesten Stand ist, was bedeutet, dass die Änderungen aus Ihrem Arbeitsverzeichnis entfernt wurden und Ihr Repository und Ihre Dateien synchron sind.

git checkout new-parser
git status

Überprüfen des Status eines Zweigs, um sicherzustellen, dass er auf dem neuesten Stand ist

VERWANDT: So aktualisieren und pflegen Sie separate Git-Zweige

Änderungen an Commits vornehmen

Wenn Sie Ihre Commit-Nachricht verbessern müssen – vielleicht haben Sie einen Tippfehler darin entdeckt – oder vergessen haben, eine Datei bereitzustellen, die in den Commit aufgenommen werden sollte, können Sie die verwenden --amend Möglichkeit, die Dinge richtig zu stellen. Der Vorbehalt ist, dass dies nicht für Commits verwendet werden sollte, die in ein Remote-Repository gepusht wurden.

In unserer letzten Commit-Nachricht hätte „fraze“ „phrase“ sein sollen. Wenn wir verwenden git log wir können das sehen.

Das Git-Protokoll mit einem hervorgehobenen Typ

Um dies zu korrigieren, verwenden wir die --amend Option wie diese.

git commit --amend -m "Optimized phrase identification"

Verwenden der Option commit --amend zum Korrigieren einer Commit-Nachricht

Wenn wir verwenden git log Wieder einmal können wir sehen, dass der alte Commit durch einen neuen mit der korrigierten Commit-Nachricht ersetzt wurde.

Das Git-Protokoll mit der korrigierten Commit-Nachricht

Wenn wir eine Datei hinzufügen möchten, die wir vergessen haben, bereitzustellen, können wir diese Datei festschreiben, sodass sie als Teil des vorherigen Festschreibens angezeigt wird.

Wir werden verwenden add um die Datei bereitzustellen, machen Sie dann einen Commit mit der --amend Möglichkeit. Der --no-edit Option bedeutet, dass wir keine neue Commit-Nachricht bereitstellen müssen. Die vorherige Commit-Nachricht wird beibehalten.

git add jibber.c
git commit --amend --no-edit

Commit einer Datei zum vorherigen Commit

Entfernen von Änderungen aus einem Commit

Wenn Sie versehentlich eine Datei bereitgestellt und übergeben haben, die Sie nicht beabsichtigt hatten, können Sie diese Datei mit aus dem Commit entfernen Die reset Befehl. Wir setzen den Commit zurück in den Staging-Bereich oder Index. Dann entfernen wir die Datei und übertragen die restlichen Dateien erneut.

Um den letzten Commit in den Staging-Bereich zurückzusetzen, verwenden wir die reset --soft Befehl. HEAD~ ist eine Abkürzung für „the commit behind the HEAD of the project commit timeline“ oder auf Englisch „the last commit“.

git reset --soft HEAD~

Zurücksenden des letzten Commits an den Staging-Bereich

Um die Datei zu entfernen, die nicht hätte aufgenommen werden sollen, verwenden wir die reset --mixed Befehl. Dadurch werden diese Änderungen wieder in das Arbeitsverzeichnis zurückgesetzt, wodurch die geänderte Datei als nicht bereitgestellte, nicht festgeschriebene Datei neu erstellt wird.

git reset --mixed jibber.c

Entfernen einer Datei aus dem Staging-Bereich von Git

Wir müssen die anderen Dateien, die im Index verbleiben, festschreiben.

git commit -m "Experimental tweaks"

Festschreiben der Dateien, die im Staging-Bereich verbleiben

Die anderen beiden Dateien, die sich im ursprünglichen Commit befanden, werden für uns erneut festgeschrieben.

VERWANDT: Wie man Git-Commits repariert, bearbeitet oder rückgängig macht (Ändern des Git-Verlaufs)

Zurücksetzen eines gesamten Commit

Manchmal ist es am einfachsten, einen gesamten Commit rückgängig zu machen. Es versetzt Ihr Arbeitsverzeichnis und Ihr Repository wieder in den Zustand, in dem sie sich vor dem Commit befanden.

Wir müssen die gehashte Referenz-ID des Commits verwenden. Wir können dies finden, indem wir verwenden git log:

Das Git-Protokoll mit hervorgehobener Commit-ID

Kopieren Sie diese Referenz und verwenden Sie sie in der revert Befehl:

git revert e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8

Zurücksetzen eines durch seine Commit-ID identifizierten Commit

Dadurch wird Ihr Standardeditor geöffnet, sodass Sie eine Zurücksetzungsnachricht bearbeiten können. Es ist eine Standardnachricht für Sie eingetragen. Sie können diese entweder verwenden oder nach Ihren Wünschen bearbeiten.

Bearbeiten der Zurücksetzungsnachricht, wobei die Standardnachricht hervorgehoben ist

Wenn Sie mit Ihrer Rückkehrnachricht zufrieden sind, speichern Sie die Datei und beenden Sie den Editor. In nano tun Sie dies mit „Strg+O“ und „Strg+X“.

Die abgeschlossene Zurücksetzungsaktion, die einen gesamten Commit rückgängig macht

Verwenden git log Wieder können wir sehen, dass ein neues Commit hinzugefügt wurde, das die Änderungen des rückgängig gemachten Commits rückgängig macht.

Das Schweizer Taschenmesser von Git

Offensichtlich, commit ist einer der wichtigsten Git-Befehle. Es kann viel, also gibt es viel zu lernen. Es ist gut investierte Zeit, sich mit den weniger genutzten Funktionen vertraut zu machen. Wenn Sie einen Fehler sofort korrigieren müssen, werden Sie froh sein, dass Sie sich im Voraus vorbereitet haben.

VERWANDT: So verwenden Sie Git-Merge



source-107

Leave a Reply