Zum Inhalt springen

git commit

Definition

Der Befehl git commit speichert alle aktuell gestageten Änderungen des Projekts. Commits werden erstellt, um den aktuellen Zustand eines Projekts festzuhalten. Festgeschriebene Snapshots gelten als sichere Versionen eines Projekts, da Git vor Änderungen nachfragt. Bevor der Befehl git commit ausgeführt wird, wird der Befehl git add verwendet, um Änderungen zu stagen, die anschließend in einem Commit gespeichert werden.

Funktionsweise

Git-Snapshots werden im lokalen Repository festgeschrieben. Git ermöglicht es, Commits lokal zu sammeln, anstatt Änderungen sofort an ein zentrales Repository zu pushen. Dies bietet viele Vorteile, wie das Aufteilen einer Funktion in Commits, das Gruppieren verwandter Commits und das Bereinigen der lokalen Historie vor dem Pushen zum zentralen Repository. Dies gibt Entwicklern auch die Möglichkeit, isoliert zu arbeiten.

Häufige Optionen

git commit -aErstellt einen Snapshot aller Änderungen im Arbeitsverzeichnis. Nur Änderungen an verfolgten Dateien werden einbezogen.
git commit -m "commit message"Erstellt einen Commit mit einer übergebenen Commit-Nachricht. Standardmäßig öffnet git commit den lokal konfigurierten Texteditor, um eine Commit-Nachricht einzugeben.
git commit -am "commit message"Kombiniert die Optionen -a und -m, um alle geänderten verfolgten Dateien zu stagen und einen Commit mit einer inline-Nachricht zu erstellen.
git commit --amendÄndert den letzten Commit. Gestagete Änderungen werden dem vorherigen Commit hinzugefügt. Dieser Befehl öffnet den systemweit konfigurierten Texteditor und ändert die zuvor angegebene Commit-Nachricht.

Änderungen mit einem Commit speichern

Im folgenden Beispiel haben wir die Datei w3docs.txt mit geänderten Inhalten im aktuellen Branch. Um den gestageten Snapshot der Datei zu committen, sollten Sie die Datei zunächst mit dem Befehl git add stagen.

Befehl git add

bash
git add w3docs.txt

Das Ausführen von git add verschiebt die Datei w3docs.txt in den Git-Staging-Bereich. Verwenden Sie den Befehl git status, um die Ausgabe zu sehen.

Befehl git status

bash
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: w3docs.txt

Die Ausgabe zeigt an, dass w3docs.txt mit dem nächsten Commit gespeichert wird. Der Commit wird durch Ausführen erstellt:

Git-Commit

bash
git commit

Das Ausführen von git commit öffnet einen Texteditor (den wir über git config festlegen können), der nach einer Commit-Protokollnachricht und einer Liste dessen fragt, was committet wird:

Git-Commit im Editor

bash
# Enter the commit message of your changes. Lines that start
# with '#' will be ignored, an empty message breaks off the commit.
# On branch master
# Changes needed to be committed:
# (use "git reset HEAD ..." to unstage)
#
#modified: w3docs.txt

Das konventionelle Commit-Format von Git fasst die Änderung in der ersten Zeile in unter 50 Zeichen zusammen, gefolgt von einer Leerzeile und einer detaillierten Erklärung. Zum Beispiel:

Git-Commit-Nachricht

bash
Change the message displayed by w3docs.txt

- Update the sayHello() function to get the username
- Change the sayGoodbye() function to a more welcoming message

Die erste Zeile der Commit-Nachricht ist die Betreffzeile, der Rest ist der Körper.

Einen Commit aktualisieren (amenden)

Das folgende Beispiel öffnet den konfigurierten Texteditor, der bereits mit der eingegebenen Commit-Nachricht vorausgefüllt ist. Das bedeutet, dass Sie den letzten Commit bearbeiten, anstatt einen neuen zu erstellen.

git add und git commit

bash
git add w3docs.txt
git commit --amend

Git commit vs. SVN commit

SVN ist ein zentralisiertes Anwendungsmodell, während Git ein verteiltes Anwendungsmodell ist. Ein svn commit pushen Änderungen vom lokalen Client zu einem zentralen Repository. Bei Git werden die Snapshots im lokalen Repository festgeschrieben. Git-Commits können an beliebige Remote-Repositories gepusht werden.

Snapshots, keine Unterschiede

Git basiert auf Snapshots, während SVN Unterschiede in Dateien verfolgt. Ein svn commit zeichnet einen Diff auf, der auf die ursprüngliche Datei im Repository angewendet wird. Git zeichnet den vollständigen Zustand des Projekts in jedem Commit auf. Beim Speichern des Projektzustands erstellt Git einen Snapshot der aktuellen Dateien und speichert eine Referenz auf diesen Snapshot. Wenn sich eine Datei nicht geändert hat, speichert Git sie nicht erneut, was den Speicherplatz optimiert.

git file diff

Snapshots

Praxis

Welche Merkmale und Optionen hat der Befehl 'git commit'?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.