Erster Commit

Um einen Startpunkt in der Historie zu haben, sollte als erstes ein einzelner Commit angelegt werden. Als Inhalt eignet sich gut eine "projektneutrale" Datei, wie z. B. README[.md] oder .gitignore.

Wir nehmen für unser Beispiel beides.

$ vim README.md

Inhalt README.md:

# Git-Schulungsprojekt
Ein Projekt zum Üben von Git-Operationen.
$ vim .gitignore

Inhalt .gitignore:

%SystemDrive%
Thumbs.db
.DS_Store

Git erkennt diese neuen Dateien:

$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
README.md
nothing added to commit but untracked files present (use "git add" to track)

Um unseren Commit zu erstellen, müssen die Dateien vorerst gestaged werden:

$ git add README.md .gitignore

Auch dieser Schritt bewirkt eine Veränderung des Gesamtzustandes aus Sicht von Git:

$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: README.md

Nun können wir unseren ersten Commit erzeugen:

$ git commit

Nun sollte sich ein Editor öffnen, der eine Kurzbeschreibung des Commits (auskommentierter Text) enthält.

1 |
1 # Please enter the commit message for your changes. Lines starting
2 # with '#' will be ignored, and an empty message aborts the commit.
3 #
4 # On branch master
5 #
6 # Initial commit
7 #
8 # Changes to be committed:
9 # new file: .gitignore
10 # new file: README.md
11 #

In diesen wird die Commit-Message eingetragen und mit mit "Speichern" und "Schließen" quittiert. Wird nicht gespeichert, oder keine Nachricht eingegeben, kann an dieser Stelle der Commit abgebrochen werden.

Commit Messages sollten in einem fest definierten Format geschrieben werden:

  • Die Sprache ist Englisch.
  • Die erste Zeile enthält eine kurze Zusammenfassung des Commits.
  • Diese Zusammenfassung ist im Imperativ geschrieben und maximal 50 Zeichen lang, beginnt mit einem Großbuchstaben und endet ohne Satzzeichen.
  • Danach folgen entweder eine leere Zeile und dann eine längere Beschreibung des Commits oder keins von beiden.
  • Die längere Beschreibung kann beliebig lang sein, ist in vollständigen Sätzen geschrieben, wird aber nach maximal 72 Zeichen umgebrochen (an Wortenden).

Die Commit Message hat großen Dokumentationscharakter. Sie ist für die Lebensdauer des Repositories mit den genauen Änderungen in allen committeten Dateien und dem Namen des Autors verknüpft. So kann nachträglich der Zeitpunkt einer Änderung nachvollzogen werden, und anhand der Nachricht selbst nach Möglichkeit auch der Grund. Aus diesem Grund sollte bei dem Verfassen der Nachrichten mit Sorgfalt gearbeitet werden.

Nicht jede Commit Message ist gleich wichtig. Gerade um während der laufenden Entwicklung den aktuellen Stand zu sichern, lohnt es sich, häufig zu committen. In diesem Fall muss natürlich nicht jedes Mal ein Aufsatz verfasst werden. Solche Commits lassen sich später aber auch noch aufräumen, man kann z. B. mehrere Commits zusammenfassen oder Nachrichten überarbeitet werden. Diese Möglichkeiten gibt es, bis die Commits gepusht wurden, danach können sie nicht mehr verändert werden.

In unserem Fall reicht es, nur die kurze Nachricht zu verfassen:

Initial commit, add .gitignore and empty README

Ergebnis

Nach dem Speichern fasst Git den Commit noch einmal zusammen:

[master (root-commit) ad65f62] Initial commit, add .gitignore and empty README
2 files changed, 6 insertions(+)
create mode 100644 .gitignore
create mode 100644 README.md

Der String ad65f62 sind die ersten Zeichen des Commit-Hashes (s. o.). Zusätzlich berichtet Git, dass zwei Dateien hinzugefügt wurden und ingesamt 6 Zeilen neu sind.