Commit
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.
Stabilität
Abschnitt betitelt „Stabilität“Commits helfen Stabilität in den Prozess zu bringen:
Von Commit zu Commit arbeiten
Abschnitt betitelt „Von Commit zu Commit arbeiten“- Ich beginne mit einem (noch unfertigen, aber) funktionierenden Programm
- ich mache eine kleine Änderung / Erweiterung, es klappt nicht sofort
- ich behebe alle Fehler
- und erreichen einen konsistenten, funktionierenden Zustand
- Jetzt mache ich einen Commit.
Nun kann ich in Ruhe eine Pause machen, meine Arbeit unterbrechen, morgen erst weitermachen - ich hinterlasse einen guten Zustand.
Commit als abgeschlossener Arbeitsschritt
Abschnitt betitelt „Commit als abgeschlossener Arbeitsschritt“In einem Commit bündelt man also zusammen gehörende Arbeitsschritte, zum Beispiel:
- Ein Bild zum Projekt hinzufügen
- Den
<img>Tag in die HTML-Datei einfügen
Oder
- Ein Formular in die Webseite einbauen
- Im Stylesheet Einträge für das Formular machen
Oder
- Eine Bild-Datei aus dem Repository löschen
- Den
<img>Tag aus der HTML-Datei entfernen
Commit Message
Abschnitt betitelt „Commit Message“Zu 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 --onelinee5166ac added json parser to user stamps009cd27 download as json is now possible in user stempelheft sectionf98832a added export to json button in user stempelheft81e98f8 refactor: move /talks to /user/:user_id/talks9772224 display link + location on front page74258d9 fix migrations for new categories to work with postgres 93af38d1 replace font because umlauts missing. discern web+game in categories39eee45 clean up event form and show-view for event6a8fe6c add missing partial back in645b566 impersonate in stagingDie 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.
Konventionen für Commit Messages
Abschnitt betitelt „Konventionen für Commit 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:
- Die Commit Message ist in englischer Sprache
- Sie beschreibt die Änderung im Code kurz und prägnant
Am Anfang der Commit Message kann man den Typ der Änderung bekannt geben, mit folgenden Abkürzungen:
- fix: ein Fehler wurde behoben, das Programm funktioniert jetzt wieder
- feat: ein neues Feature wurde eingebaut, das Programm kann jetzt mehr als vorher
- refactor: der Code wurde verbessert, das Programm tut das selbe wie zuvor
Beispiel: Einfügen
Abschnitt betitelt „Beispiel: Einfügen“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:
Beispiel: Löschen
Abschnitt betitelt „Beispiel: Löschen“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:
Siehe auch
Abschnitt betitelt „Siehe auch“- Dateien Löschen - Kapitel im Pro Git Buch
- Conventional Commits
beantwortet: 0 / 0 (0%)
richtig: 0 / 0 (0%)