gemerter commit rückgängig machen

Gast #6204654
Lesenswert?

Hallo,

mein Projektleiter hat einen push von mir ins repo gemergt (obwohl er es 
gar nicht machen durfte und in der commit-message drinne stand, dass 
dieser nicht gemergt werden soll (heul heul :) )  ).
gibt es jetzt einen ordentlichen weg um das wieder zu reverten?
Also zur not könnte ich den vorigen stand wieder herstellen und dann 
direkt auf dem master mit force pushen. Dann wären aber in der historie 
zwei kommmits. Diese wären auch nciht direkt hintereinander, sondern 
dazwischen wären noch zwei andere kommits.
Gibt es eine anderen möglichkeit einen bestimmten merge rückgängig zu 
machen? Also beim pushen geht es mein ich mit revert (obwohl das bei mir 
auch nicht so wirklihc funktioniert hat. mag aber an mir liegen)
#6204754
Lesenswert?

felix schrieb:
> Also zur not könnte ich den vorigen stand wieder herstellen und dann
> direkt auf dem master mit force pushen. Dann wären aber in der historie
> zwei kommmits.

Nö.

Entweder du erstellst mit git revert einen Commit, der die Änderungen 
rückgängig macht. Das wäre die normale Lösung.

Falls du spezielle Gründe hast aus denen du das nicht willst, kannst du 
den Commit auch aus der History entfernen (mit force push). Die 
einfachste Lösung das zu erreichen ist vermutlich, ein reset --hard auf 
den Stand vor dem Merge zu machen, und dann alle Commits die danach 
kamen die du behalten möchtest zu cherry-picken. Dasselbe lässt sich 
auch mit git rebase -i erreichen.
Gast #6205334
Lesenswert?

Du gehst mit `git reset --hard <mergeCommit>~` bis einen commit vor den 
merge, vorsicht, löscht alle lokalen Änderungen. Und pass auf, dass du 
in dem branch bist, der gemergt wurde, nicht in dem branch in den 
gemergt wurde (z.B. master oder develop).

Damit ist der merge Geschichte. Veröffentlichen kannst du nur per `push 
--force-with-lease`
Gast #6206111
Lesenswert?

Sven B. schrieb:
> Imonbln schrieb:
>> Einen Merge zu reverten Funktioniert aber nur so mittel prächtig in git.
>
> Funktioniert genausogut wie jeden anderen Commit zu reverten.

nicht ganz siehe:
https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-revert.html
und
https://mirrors.edge.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html

> Reverting a merge commit declares that you will never want the tree
> changes brought in by the merge. As a result, later merges will only
> bring in tree changes introduced by commits that are not ancestors of the
> previously reverted merge. This may or may not be what you want.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren