Git
Mit git add bereiten wir einen Commit vor, mit git commit führen wir ihn durch - aber
was ist ein Commit? Wofür verwendet man ihn?
Am Anfang erlebt man Programmieren oft als chaotischen Vorgang
“Hilfe, mein Programm geht nicht, ich ändere mal was in Zeile 2 - nö ist nicht besser geworden - dann vielleicht Zeile 4 - hm, jetzt ist die Fehlermeldung anders - ist das gut oder ist das schlecht?…” u.s.w.
Commits helfen Stabilität in den Prozess zu bringen:
Nun kann ich in Ruhe eine Pause machen, meine Arbeit unterbrechen, morgen erst weitermachen - ich hinterlasse einen guten Zustand.
In einem Commit bündelt man also zusammen gehörende Arbeitsschritte, zum Beispiel:
<img> Tag in die HTML-Datei einfügenOder
Oder
<img> Tag aus der HTML-Datei entfernenZu jedem Commit speichert man eine Zeile Beschreibung, die Commit-Message. Bei einem Projekt das schon länger läuft sieht das dann so aus:
$ git log --oneline
e5166ac added json parser to user stamps
009cd27 download as json is now possible in user stempelheft section
f98832a added export to json button in user stempelheft
81e98f8 refactor: move /talks to /user/:user_id/talks
9772224 display link + location on front page
74258d9 fix migrations for new categories to work with postgres 9
3af38d1 replace font because umlauts missing. discern web+game in categories
39eee45 clean up event form and show-view for event
6a8fe6c add missing partial back in
645b566 impersonate in staging
Die git Messages erzählen die Geschichte des Projekts. Wenn ich nach zwei Wochen Urlaub zurück komme und wissen will was inzwischen im Projekt passiert ist, dann lese ich zuerst einmal die git Messages.
In professionellen Software Projekten gibt es oft genaue Vorschriften wie Commit Messages formuliert sein müssen.
Für den Anfang reichen einige ganz simple Regeln:
Am Anfang der Commit Message kann man den Typ der Änderung bekannt geben, mit folgenden Abkürzungen:
Ich bearbeite eine Webseite. Ich füge eine neue Bilddatei ein und verändere das Stylesheet:
Es gibt also eine neue Datei und zwei Veränderungen in meinem Projekt. Ich teste die Webeseite nochmal im Browser, um sicher zu stellen, dass das Projekt in einem guten Zustand ist und keine Errors enthält.
Diese drei Änderungen packe ich zusammen in einen Commit:
Ich will ein Bild aus der Webseite entfernen. Zuerst entferne ich den img Tag
aus der HTML Datei, danach ist der Status so:
Dann lösche ich die Bilddatei selbst mit dem Befehl git rm - damit
wird die Datei aus der Working copy gelöscht, und der lösch-Befehl gestaged. Danach ist der Status so:
Nun kann ich den Commit abschließen:
Ist die Datei damit auch auf dem Remote Repository gelöscht? Nein!
Damit das Remote Repository auch erfährt, dass die Datei gelöscht wurde muss ich erst Pushen: