Git Succinctly Änderungen aufzeichnen

Die Aufrechterhaltung einer Reihe "sicherer" Revisionen eines Projekts ist die Kernfunktion jedes Versionskontrollsystems. Git schafft dies durch Aufnahme Momentaufnahmen eines Projekts. Nach der Aufnahme eines Schnappschusses können Sie alte Versionen anzeigen, wiederherstellen und experimentieren, ohne die vorhandene Funktionalität zu zerstören.

SVN- und CVS-Benutzer sollten beachten, dass sich dies grundlegend von der Implementierung ihres Systems unterscheidet. Beide Programme zeichnen Unterschiede für jede Datei auf - eine inkrementelle Aufzeichnung der Änderungen in einem Projekt. Im Gegensatz dazu sind Gits Snapshots genau das-Momentaufnahmen. Jedes Commit enthält die vollständige Version jeder darin enthaltenen Datei. Dies macht Git unglaublich schnell, da der Status einer Datei nicht bei jeder Anforderung generiert werden muss:


Aufnehmen von vollständigen Schnappschüssen, nicht Unterschieden zwischen Versionen

In diesem Kapitel wird der grundlegende Arbeitsablauf zum Erstellen von Momentaufnahmen unter Verwendung des Arbeitsverzeichnisses, des Bereitstellungsbereichs und des festgeschriebenen Verlaufs beschrieben. Dies sind die Kernkomponenten der Git-basierten Revisionskontrolle.


Der Inszenierungsbereich

Mit dem Staging-Bereich von Git können Sie ein Commit organisieren, bevor Sie es zum Projektverlauf hinzufügen. Inszenierung ist der Vorgang des Verschiebens von Änderungen aus dem Arbeitsverzeichnis in den bereitgestellten Snapshot.


Komponenten, die an der Bereitstellung eines Commits beteiligt sind

Sie haben die Möglichkeit zu wählen und auszuwählen verbunden Änderungen aus dem Arbeitsverzeichnis, anstatt alles auf einmal zu begehen. Dies bedeutet, dass Sie erstellen können logisch Schnappschüsse vorbei chronologisch Einsen. Dies ist ein Segen für Entwickler, da sie Codierungsaktivitäten von Versionskontrollaktivitäten trennen können. Wenn Sie Features schreiben, können Sie vergessen, sie in isolierten Abschnitten zu übergeben. Wenn Sie mit der Codierungssitzung fertig sind, können Sie die Änderungen über die Bühne in beliebig viele Commits unterteilen.

Verwenden Sie den folgenden Befehl, um dem Staging-Bereich neue oder geänderte Dateien aus dem Arbeitsverzeichnis hinzuzufügen:

 git add 

Um eine Datei aus einem Projekt zu löschen, müssen Sie sie wie eine neue oder geänderte Datei zum Bereitstellungsbereich hinzufügen. Der nächste Befehl führt das Löschen aus und stoppt das Verfolgen der Datei. Die Datei wird jedoch nicht aus dem Arbeitsverzeichnis gelöscht:

 git rm --cached 

Die Bühne inspizieren

Das Anzeigen des Status Ihres Repositorys ist eine der häufigsten Aktionen in Git. Der folgende Befehl gibt den Status des Arbeitsverzeichnisses und des Bereitstellungsbereichs aus:

 Git-Status

Dies führt zu einer Meldung, die der folgenden ähnelt (bestimmte Abschnitte können je nach Status Ihres Repositorys weggelassen werden):

 # Am Zweigmaster # Änderungen, die festgeschrieben werden sollen: # # Neue Datei: foobar.txt # # Änderungen werden für das Festschreiben nicht bereitgestellt: # # modified: foo.txt # # Nicht abgerufene Dateien: # # bar.txt

Der erste Abschnitt "Zu bezeichnende Änderungen" ist Ihr inszenierter Snapshot. Wenn du laufen würdest git begehen Im Moment würden nur diese Dateien zum Projektverlauf hinzugefügt. Der nächste Abschnitt listet auf verfolgt Dateien, die beim nächsten Commit nicht berücksichtigt werden. Schließlich enthält "Nicht abgerufene Dateien" Dateien in Ihrem Arbeitsverzeichnis, die nicht zum Repository hinzugefügt wurden.

Unterschiede erzeugen

Wenn Sie genauere Informationen zu den Änderungen in Ihrem Arbeitsverzeichnis oder Staging-Bereich benötigen, können Sie mit dem folgenden Befehl ein diff generieren:

 git diff

Dies gibt einen Unterschied von jedem aus nicht inszeniert Ändern Sie in Ihrem Arbeitsverzeichnis. Sie können auch einen Unterschied von allen generieren inszeniert ändert sich mit der --zwischengespeichert Flagge:

 git diff --cached

Beachten Sie, dass die Projekthistorie außerhalb des Bereichs von liegt Git-Status. Um festgeschriebene Momentaufnahmen anzuzeigen, benötigen Sie diese Git Log.


Komponenten im Rahmen von Git-Status

Commits

Commits repräsentieren jede gespeicherte Version eines Projekts, wodurch sie zur atomaren Einheit der Git-basierten Versionskontrolle werden. Jeder Commit enthält eine Momentaufnahme des Projekts, Ihre Benutzerinformationen, das Datum, eine Commit-Nachricht und eine SHA-1-Prüfsumme vom gesamten Inhalt:

 begehen b650e3bd831aba05fa62d6f6d064e7ca02b5ee1b Urheber: john  Datum: Mi 11. Jan 00:45:10 2012 -0600 Einige Commit-Nachricht

Diese Prüfsumme dient als eindeutige ID eines Commits und bedeutet auch, dass ein Commit-Wille vorliegt noch nie beschädigt oder unbeabsichtigt verändert werden, ohne dass Git davon erfährt.

Da der Staging-Bereich bereits die gewünschte Änderungsmenge enthält, ist für das Festschreiben keine Beteiligung des Arbeitsverzeichnisses erforderlich.


Komponenten, die für das Festlegen eines Snapshots verantwortlich sind

Führen Sie die folgenden Schritte aus, um den bereitgestellten Snapshot festzuschreiben und zum Verlauf des aktuellen Zweigs hinzuzufügen:

 git begehen

Sie werden mit einem Texteditor angezeigt und aufgefordert, eine "Commit-Nachricht" einzugeben. Commit-Nachrichten sollten folgende Form haben:

   

Git verwendet die erste Zeile für die Formatierung der Protokollausgabe, das Versenden von Patches per E-Mail usw., sollte also kurz sein und gleichzeitig das gesamte Changeset beschreiben. Wenn Sie die Zusammenfassungszeile nicht finden können, enthält Ihr Commit zu viele nicht zusammenhängende Änderungen. Sie sollten zurückgehen und sie in verschiedene Commits aufteilen. Auf die Zusammenfassung sollte eine leere Zeile und eine detaillierte Beschreibung der Änderungen folgen (z. B. warum Sie die Änderungen vorgenommen haben und welcher Ticketnummer dies entspricht)..


Commits überprüfen

Wie der Status eines Repositorys ist das Anzeigen seines Verlaufs eine der häufigsten Aufgaben in der Git-Versionskontrolle. Sie können die Commits der aktuellen Zweigstelle anzeigen mit:

 Git Log

Wir haben jetzt die einzigen zwei Tools, die wir benötigen, um jede Komponente eines Git-Repositorys zu untersuchen.


Ausgabe von Git-Status vs. Git Log

Dies gibt uns auch eine natürliche Gruppierung von Befehlen:

  • Bühne / Arbeitsverzeichnis: git add, git rm, Git-Status
  • Engagierte Geschichte: git begehen, Git Log

Nützliche Konfigurationen

Git bietet eine Fülle von Formatierungsoptionen für Git Log, Einige davon sind hier enthalten. Um jedes Commit in einer einzelnen Zeile anzuzeigen, verwenden Sie:

 Git Log - Online

Oder verwenden Sie zum Anpassen des Verlaufs einer einzelnen Datei anstelle des gesamten Repositorys Folgendes:

 Git Log - Online 

Das Filtern der Protokollausgabe ist auch sehr nützlich, wenn Ihre Historie über einen Bildschirm mit Commits hinausgeht. Sie können Folgendes verwenden, um die in enthaltenen Commits anzuzeigen aber nicht in . Beide Argumente können eine Festschreibungs-ID, ein Zweigname oder ein Tag sein:

 Git Log 

Schließlich können Sie in jedem Commit eine Änderung der Änderungen anzeigen. Dies ist nützlich, um festzustellen, welche Dateien von einem bestimmten Commit betroffen sind.

 git log --stat

Für die Visualisierung des Verlaufs möchten Sie vielleicht auch die gitk Befehl, der eigentlich ein separates Programm ist, das sich der grafischen Darstellung von Zweigen widmet. Lauf git help gitk für Details.


Kennzeichnen von Commits

Tags sind einfache Hinweise auf Commits und sie sind unglaublich nützlich, um wichtige Revisionen wie öffentliche Veröffentlichungen mit einem Lesezeichen zu versehen. Das Git-Tag Befehl kann verwendet werden, um ein neues Tag zu erstellen:

 git tag -a v1.0 -m "Stabile Veröffentlichung"

Das -ein Diese Option weist Git an, ein kommentiert Tag, mit dem Sie eine Nachricht mitschreiben können (spezifiziert mit -m).

Wenn Sie denselben Befehl ohne Argumente ausführen, werden Ihre vorhandenen Tags aufgelistet:

 Git-Tag

Diese Lektion repräsentiert ein Kapitel aus Git Erfolgreich, ein kostenloses eBook aus dem Team von Syncfusion.