git

Git Commit erklärt

Der Befehl git commit ist einer der wichtigsten in Git, da er verwendet wird, um Änderungen im lokalen Repository festzuhalten. Ein Commit speichert einen Schnappschuss der aktuellen Arbeit und fügt ihn zur Historie des Repositories hinzu. Jedes Commit wird mit einer eindeutigen ID versehen, sodass der Verlauf eines Projekts nachverfolgt werden kann.


3 Minuten Lesezeit
12 Okt 2024
documents/git_ROBpfQ5.jpg

Was lerne ich in diesem Kurs?

Dieses Tutorial erklärt, wie der Befehl git commit verwendet wird, und zeigt verschiedene Optionen zur Optimierung des Workflows.

1. Was ist ein Git Commit?

Ein Commit ist eine Speicherung eines bestimmten Zustands eines Git-Repositories. Es speichert alle Änderungen, die in der Arbeitskopie gemacht und zum Staging-Bereich hinzugefügt wurden. Mit jedem Commit wird ein Snapshot des aktuellen Standes des Projekts erstellt, und diese Commits bilden zusammen die Projektgeschichte.

Ablauf eines Commits:

  1. Änderungen vornehmen: Dateien im Projekt bearbeiten oder neue Dateien hinzufügen.
  2. Änderungen zum Staging-Bereich hinzufügen: Die geänderten oder neu hinzugefügten Dateien mit git add zum Staging-Bereich hinzufügen.
  3. Commit erstellen: Mit git commit die Änderungen endgültig speichern.

2. Syntax von git commit

Der grundlegende Befehl für einen Commit sieht wie folgt aus:

git commit -m "Commit-Botschaft"
  • -m: Hiermit wird eine Commit-Botschaft (Commit Message) übergeben, die beschreibt, welche Änderungen vorgenommen wurden.
  • "Commit-Botschaft": Eine kurze Beschreibung der durchgeführten Änderungen.

Beispiel: Einen einfachen Commit erstellen

git add <Datei>
git commit -m "Fügt neue Datei hinzu"

In diesem Beispiel wird eine Datei zum Staging-Bereich hinzugefügt und anschließend mit einer Beschreibung der vorgenommenen Änderung committet.

3. Der Staging-Bereich

Bevor ein Commit erstellt wird, müssen die Änderungen dem Staging-Bereich (auch "Index" genannt) hinzugefügt werden. Mit dem Befehl git add können Dateien oder Änderungen vorbereitet werden, die dann im nächsten Commit enthalten sein sollen.

Beispiel: Änderungen zum Staging-Bereich hinzufügen

git add datei1.txt
git add datei2.txt

Hier werden zwei Dateien dem Staging-Bereich hinzugefügt. Diese Dateien werden im nächsten Commit gespeichert.

Beispiel: Alle Änderungen zum Staging-Bereich hinzufügen

git add .

Dieser Befehl fügt alle Änderungen (neue Dateien, Änderungen in bestehenden Dateien und gelöschte Dateien) zum Staging-Bereich hinzu.

4. Commit-Nachricht

Die Commit-Nachricht beschreibt die Änderungen, die im Commit enthalten sind. Eine gute Commit-Nachricht sollte kurz, prägnant und aussagekräftig sein, damit der Verlauf der Änderungen leichter nachvollzogen werden kann.

Beispiel: Eine sinnvolle Commit-Nachricht

git commit -m "Fix: Korrigiert Berechnungsfehler in der Summe-Funktion"

In diesem Beispiel beschreibt die Commit-Nachricht, was in dem Commit geändert wurde und warum (in diesem Fall wurde ein Berechnungsfehler behoben).

Erweiterte Commit-Nachricht

Wenn eine ausführlichere Beschreibung der Änderungen benötigt wird, kann der Befehl ohne die -m-Option verwendet werden. Dadurch öffnet sich der Standard-Editor, in dem eine längere Nachricht eingegeben werden kann.

git commit

In der ersten Zeile kann eine kurze Zusammenfassung eingegeben werden, gefolgt von einer detaillierten Beschreibung in den folgenden Zeilen.

5. Änderung eines Commits: git commit --amend

Falls nach einem Commit noch etwas hinzugefügt oder eine Commit-Nachricht korrigiert werden muss, kann der Befehl git commit --amend verwendet werden. Damit wird der letzte Commit geändert, ohne einen neuen Commit zu erstellen.

Beispiel: Commit-Nachricht ändern

git commit --amend -m "Neue Commit-Nachricht"

Dieser Befehl überschreibt die Commit-Nachricht des letzten Commits mit einer neuen Nachricht.

Beispiel: Änderungen zum letzten Commit hinzufügen

git add weitere_datei.txt
git commit --amend

In diesem Beispiel wird eine Datei hinzugefügt, die im vorherigen Commit vergessen wurde. Anstatt einen neuen Commit zu erstellen, wird der vorherige Commit bearbeitet, um die neue Datei zu enthalten.

6. Git Commit ohne Staging-Bereich: git commit -a

Mit der Option -a können alle geänderten Dateien (die bereits im Repository existieren) direkt committet werden, ohne sie vorher mit git add zum Staging-Bereich hinzuzufügen. Diese Option betrifft jedoch nur bereits getrackte Dateien (Dateien, die Git bereits kennt).

Beispiel: Commit ohne git add

git commit -a -m "Commit für alle geänderten Dateien"

In diesem Beispiel werden alle geänderten Dateien direkt zum Commit hinzugefügt und dann committet.

7. Mehrere Dateien mit einer Commit-Nachricht speichern

Es ist möglich, mehrere Änderungen gleichzeitig in einem Commit zu speichern. Dies wird häufig gemacht, wenn alle Änderungen zusammengehören und in einem Schritt festgehalten werden sollen.

Beispiel: Mehrere Dateien in einem Commit speichern

git add datei1.txt
git add datei2.txt
git commit -m "Fügt Datei 1 und Datei 2 hinzu"

8. Commit-Historie überprüfen

Die Commit-Historie kann mit dem Befehl git log überprüft werden. Damit können alle früheren Commits mit ihren Nachrichten und IDs angesehen werden.

Beispiel: Commit-Historie anzeigen

git log

Dieser Befehl zeigt eine Liste aller bisherigen Commits, die den Commit-Hash, den Autor, das Datum und die Commit-Nachricht enthalten.

Beispiel: Kurze Commit-Historie anzeigen

git log --oneline

Dieser Befehl zeigt eine kürzere Übersicht der Commit-Historie, wobei nur der erste Teil des Commit-Hashes und die Commit-Nachricht angezeigt werden.

9. Commit zurücksetzen: git reset

Falls ein Commit rückgängig gemacht werden soll, kann der Befehl git reset verwendet werden. Damit kann man zu einem bestimmten Commit zurückkehren und dabei Änderungen im Arbeitsverzeichnis beibehalten oder verwerfen.

Beispiel: Zu einem vorherigen Commit zurückkehren

git reset --soft HEAD~1

Dieser Befehl setzt das Repository auf den Zustand des vorherigen Commits zurück, behält jedoch die Änderungen im Staging-Bereich. Alternativ kann mit --hard das Arbeitsverzeichnis vollständig auf den Zustand des vorherigen Commits zurückgesetzt werden:

git reset --hard HEAD~1