In diesem Cheat Sheet schreibe ich meinen gewöhnlichen Workflow mit Git auf. Normalerweise nutze ich kein “Mergen”, sodern bevorzuge “Rebasen”. Außerdem benutze ich Feature Branches.
Dieser Cheat-Sheet basiert im wesentlichen auf folgendem Guide sowie meinen persönlichen Erfahrungen: https://www.conventionalcommits.org/en/v1.0.0/
Folgende Branches existieren in diesem Cheat-Sheet:
Folgende Präfixe haben sich als hilfreich erwiesen.
Commit Messages sollten nach folgendem Schema erstellt werden. Beispielsweise für ein Feature mit der Ticketnumer #42
feat(#42): Add new cool stuffThis feature adds the new cool stuff described in the ticket.
In einem Projekt habe ich mich des Öfteren nicht an diese Konvention erhalten und einen netten Regenschirm geschenkt bekommen. Grüße gehen raus. \<Hier Regenschirm Foto einfügen>
git checkout <branch-name>
git checkout -b <branch-name>
Wo ausführen?: In deinem Feature Branch
Effekt: Dies bereinigt die History im Feature branch (z.B. bei einer großen Anzahl an WIP-Commits)
git rebase -i main
Wo ausführen?: In deinem Feature Branch
Effekt?: Dieser Befehl nimmt den aktuellen Main-Branch und fügt die Änderungen darauf an
git pull origin maingit rebase main
Wo ausführen?: In deinem Feature Branch
Effekt?: Dieser Befehl überschreibt den Remote-Branch mit dem lokalen
WICHTIG Nur auf dem eigenen Branch ausführen, da es die Git-Historie sonst unbrauchbar macht für andere.
git push -f
Wo ausführen?: Im Main Branch
Effekt: Dieser Befehl merged den Branch in den Main Branch ohne Merge-commit Nachrichten
git merge <feature-branch>
Dieser Snippet kann unter ~/.git/templates/commit-msg
abgelegt werden. Somit hat man immer die
Formatvorlage für Commit-Messages im Blick.
HINWEIS: Die leeren Linien sind wichtig
# diese Zeile löschen nach dem Einfügen## Format of the commit message# <type>(<scope>): <subject># <BLANK LINE># <body># <BLANK LINE># <footer>### if applied, this commit will <TEXT>### feat: A new feature# fix: A bug fix# docs: Documentation only changes# style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)# refactor: A code change that neither fixes a bug nor adds a feature# perf: A code change that improves performance# test: Adding missing tests# chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
[user]name = Yannik Korzikowskiemail = ko@yksolutions.eu[commit]verbose = truegpgSign = truetemplate = ~/.git/templates/commit-msg[gpg]program = /usr/bin/krgpg[tag]forceSignAnnotated = true[pull]rebase = true
Quick Links