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-SchulungsprojektEin Projekt zum Üben von Git-Operationen.
$ vim .gitignore
Inhalt .gitignore:
%SystemDrive%Thumbs.db.DS_Store
Git erkennt diese neuen Dateien:
$ git statusOn branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed).gitignoreREADME.mdnothing 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 statusOn branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file: .gitignorenew 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 starting2 # with '#' will be ignored, and an empty message aborts the commit.3 #4 # On branch master5 #6 # Initial commit7 #8 # Changes to be committed:9 # new file: .gitignore10 # new file: README.md11 #
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 README2 files changed, 6 insertions(+)create mode 100644 .gitignorecreate 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.