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