Git Handbuch für Dummies, wie mich!

Das ist mein eigenes Git Handbuch für Dummies, wie mich.

Eine Ansammlung an Git Fu und always under construction und total rough.

FUCK, Ich habe alles kaputt gemacht!

git reflog

Hier sieht man ne Liste mit allen Aktionen die man jemals (stimmt nicht ganz, aber man muss auch manchmal einfach übertreiben) in Git gemacht hat.

Jede Aktion hat einen Index HEAD@{index}

Man sucht sich eine die Aktion heraus, die man gemacht hat, bevor der FUCK, ich habe alles kaputt gemacht-Moment passiert ist und macht folgendes:

git reset HEAD@{index}

Und schon sind wir in der Zeit zurückgereist und alles ist wieder cool.

Shit 💩, commit im falschen Branch 🤦‍♀️

# Den letzten Commit rückgängig machen, aber die Änderungen abrufbar lassen
git reset HEAD~ --soft
git stash
# Jetzt zu dem richtigen Branch wechseln
git checkout richtiger-branch
git stash pop
git add -u # oder einzelne Dateien hinzufügen
git commit -m "Super Commit-Message hier"

Manche Leute schwören hier auch auf cherry-picking. Ich benutze mal das eine, mal das andere.. 🤷‍♀️

git checkout richtiger-branch
# Den letzten Commit vom Master branch cherry-picken
git cherry-pick master
# Den letzten Commit vom Master-Branch löschen
git checkout master
git reset HEAD~ --hard

Wenn ich diffe, sehe ich keinen Unterschied

Git zeigt dir keine Änderungen an, die bereits in der staging area sind. Das ist kein bug, sondern ein feature. Kann aber äußerst irritierend sein, wenn man das nicht weiss.

Um dir auch die diffs in der staging area anzeigen zu lassen, machst du einfach folgendes:

git diff --staged

Den letzten Commit ändern

Mal angenommen wir haben leider sowas gemacht:

git commit -a -m "Really awesome commit message" 

Und nun haben wir festgestellt, dass git status uns Dateien anzeigt, die da gar nicht reingehören.

git reset --soft HEAD^ 

Dann entfernen wir die Dateien die wir nicht im Commit haben wollen mit

git reset path/to/file1.ext

und dann committen wir mit der gleichen Commit-Message von eben via:

git commit -c ORIG_HEAD