Machen Sie eine Git-Zusammenführung rückgängig, behalten Sie jedoch spätere Änderungen bei und schreiben Sie den Verlauf neu

8

Ich habe eine Reihe von Zweigen, jede mit verschiedenen Eigenschaften. Normalerweise habe ich einen zusätzlichen Zweig "not_master", der Master + feature A wie folgt enthält:

%Vor%

Manchmal möchte ich Feature A aufheben, aber commits x,y,z in "not_master" behalten.

Mit anderen Worten, ich möchte das:

%Vor%

Ich sehe, dass ich ein git revert -m 1 M machen kann, das ein Commit zum Ende hinzufügt, das meine Änderungen zurücksetzt, aber das möchte ich wirklich nicht machen, da diese Commits noch nicht veröffentlicht wurden, also mehr Commits machen die Geschichte noch schwerer zu lesen.

Andere schlagen vor, nur ein git reset --hard M zu machen, aber das wird die Änderungen von x,y,z dumpen. Denke ich gerade über die völlig falsche Art nach? Sollte ich nur git reset --hard M und cherry picken x, y, z?

    
KarateSnowMachine 25.01.2011, 20:15
quelle

1 Antwort

7

git rebase wird tun, was Sie wollen. git rebase -i <commit e> sollte funktionieren: Es wird ein Editor geöffnet, und Sie löschen den Zusammenführungs-Commit und speichern.

Sie sollten auch in der Lage sein, die Umbenennung von x..z direkt in e zu spezifizieren, aber das Sortieren der Semantik der Kommandozeile ist etwas haarig. Wenn ich die Manpage richtig lese, sollte es git rebase --onto <commit e> <commit M> not_master sein.

EDIT: Getestet und scheint zu funktionieren:

%Vor%

führt zu einer Historie von

%Vor%     
wnoise 25.01.2011, 20:21
quelle

Tags und Links