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:
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.
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.
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
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.
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
.
Git-Status
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: johnDatum: 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.
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)..
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.
Git-Status
vs. Git Log
Dies gibt uns auch eine natürliche Gruppierung von Befehlen:
git add
, git rm
, Git-Status
git begehen
, Git Log
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.
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.