Link Search Menu Expand Document

Lösung zu Schritt 1 - Einzelnes Commit rückgängig machen.

In der Historie wurde die Datei README.md in liesmich umbenannt. Mache diese Änderung rückgängig. Tipp: Das Commit ist als umbenennung getagged.

repo $ ls

from-feature
liesmich

repo $ git revert umbenennung

[main 4a063fa] Revert "umbenennen"
Date: Thu Jul 29 00:00:00 2021 +0000
1 file changed, 0 insertions(+), 0 deletions(-)
rename liesmich => README.md (100%)

repo $ ls

from-feature
README.md

Lösung zu Schritt 2 - Merge-Commit rückgängig machen.

In der Historie wurde ein Feature-Branch per Merge integriert.file . Mache dies änderung rückgängig. Tipp: Das Merge-Commit ist als feature-merge getagged. Tipp: Am verschinden der Datei from-feature kann man den Erfolg erkennen.

repo $ ls

from-feature
README.md

repo $ git revert -m 1 feature-merge

[main 0cde08b] Revert "Merge branch 'feature'"
Date: Thu Jul 29 00:00:00 2021 +0000
1 file changed, 12 deletions(-)
delete mode 100644 from-feature

repo $ ls

README.md

repo $ git tag merge-reverted


Lösung zu Schritt 3 - Feature-Branch kaputt!?

Ein Revert wird oft genutzt, um ein Feature kurzfristig zurückzunehmen, z. B. wegen eine Produktionsproblems. Später möchte man den Feature-Branch korrigieren und dann erneut integrieren. Das geht nicht so ohne weiteres.

Im Beispiel hat der Branch feature eine Weiterentwicklung erfahren. Versuche ihn erneut zu Mergen. Untersuche die Fehlermeldung und den Commit-Graphen. Tipp: Das gescheiterte Merge kann mit git merge --abort abgebrochen werden.

repo $ git merge feature

CONFLICT (modify/delete): from-feature deleted in HEAD and modified in feature. Version feature of from-feature left in tree.
Automatic merge failed; fix conflicts and then commit the result.

repo $ git merge --abort


repo $ git log --oneline --graph

* 0cde08b Revert "Merge branch 'feature'"
* 4a063fa Revert "umbenennen"
* 6001692 Merge branch 'feature'
|\
| * 2caf490 Created file from-feature on branch feature by bjoern.
* | 48619ce umbenennen
|/
* 50bb121 Created file README.md on branch main by bjoern.

Das Merge scheitert, weil Git Commits, die schon in der Historie enthalten sind, nicht erneut merged. Dies betrifft im Beispiel jenes Commit, das die Datei from-feature erzeugt. Es ist in der Historie enthalten und in einem späteren Commit (Dem Revert) wurde die Datei gelöscht. Der Mergekonflikt meldet also, dass die Datei auf der einen Seite bearbeitet und auf der Anderen gelöscht wurde.

Lösung zu Schritt 4 - Merge-Revert wieder rückgängig machen.

Der Trick ist, das Revert-Commit selbst zu reverten, dann sind jene Änderungen wieder da, auf denen die Weiterentwicklung des Features basiert.

Tipp: Das Commit ist als feature-merge getagged.

repo $ git revert merge-reverted

[main d508eae] Reapply "Merge branch 'feature'"
Date: Thu Jul 29 00:00:00 2021 +0000
1 file changed, 12 insertions(+)
create mode 100644 from-feature

repo $ git merge feature

Merge made by the 'ort' strategy.
from-feature | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

repo $ git log --oneline --graph

* 91dad09 Merge branch 'feature'
|\
| * dc5cc98 : Weiterentwicklung
* | d508eae Reapply "Merge branch 'feature'"
* | 0cde08b Revert "Merge branch 'feature'"
* | 4a063fa Revert "umbenennen"
* | 6001692 Merge branch 'feature'
|\|
| * 2caf490 Created file from-feature on branch feature by bjoern.
* | 48619ce umbenennen
|/
* 50bb121 Created file README.md on branch main by bjoern.

repo $ git log --oneline from-feature

dc5cc98 : Weiterentwicklung
2caf490 Created file from-feature on branch feature by bjoern.

Zur Aufgabe

Zum Überblick