====== Minimalbeispiel ======
mkdir blabla
cd blabla
git init .
echo "Hello world" > test.txt
git add test.txt
git commit -m 'proof of concept (poc)'
git checkout -b dev
Machen Sie dann folgende Änderungen und commiten Sie die Änderungen mit der entsprechenden Message:
Hello world!
Message **important**
Hello world!
Trying stuff...
Message **Experimenting**
Hello world!
Now working
Message **Now it works.**
Aber jetzt haben wir einen Punkt vergessen. Diesen noch einfügen und dann mit
git add test.txt
git commit --amend -m 'Now it really works.'
git log
Sie sehen, dass der Commit 'Now it works.' ersetzt wurde. Das ist nützlich für kleine bugfixes, die noch nirgends publiziert sind. Sind die commits einmal ge'push't (d.h. publiziert) sollten diese nicht mehr verändert werden.
git checkout main
Wichtigen Bug-fix einfügen:
Hello world
Wichtiger Bugfix
und commiten mit Message 'wichtiger bugfix':
git commit -am 'wichtiger bugfix'
git show-branch
===== Merge =====
git checkout main
git merge dev
Datei test.txt editieren, Konflikt von Hand lösen, dann mit Message 'manual merge' commiten.
Problem: Der dev-Branch enthält jetzt den wichtigen Bug-fix nicht.
Dazu könnte man einen neuen Branch starten und den dev-Branch vergessen:
git checkout main
git branch -d dev
So, und jetzt reparieren wir das ganze wieder. Suchen Sie sich die commit-ID (Hash) vom letzten commit auf dem (nicht mehr existierenden) dev-branch,
checken diesen aus und legen den branch 'dev' wieder an.
git ref-log
git checkout xxxxxxxxx
git switch -c dev
Dann machen wir den merge rückgängig. Dazu suchen Sie die commit-ID (Hash) vom letzten commit vor dem Merge (dafür könnte wohl auch HEAD^ verwendet werden können (d.h. 1 commit davor, wobei es beim merge ja zwei parents gibt...))
git checkout main
git ref-log
git reset --hard xxxxxxxx