2013-05-28 10 views
5

Welche Optionen haben Sie, wenn Sie einen Feature-Zweig "rückgängig machen" möchten? Angenommen, Sie fügen ein neues Feature supercool-feature hinzu, das Sie fertigstellen (in die Entwicklung einfließen und den Feature-Zweig löschen) und dann in ein Release übergeht. Aber dann mögen Ihre Benutzer das supercool-feature wirklich nicht. Wie kann ich diese Funktion, die bereits in die Entwicklung und ein Release eingebunden wurde, rückgängig machen?Git-Flow macht einen fertigen Feature-Zweig rückgängig

Ich benutze SourceTree, um meine Versionierung zu tun.

+1

Nun, Sie die Zusammenführung zurückkehren ... Offensichtlich ist es ein wenig komplexer als das, aber das Detail liegt darin, wie Sie Ihren Code und Ihre Tests usw. organisieren. Ich habe das Gefühl, dass es mehr zu dieser Frage gibt. –

+0

Auch das ist nicht wirklich eine Git-Flow-spezifische Frage. Was git-flow für Sie getan hat, ist, dass Sie einfach Ihren Feature-Zweig aus develop erstellen und ihn dann wieder in develop einfügen. Es gibt keine magischen Dinge im Git-Flow, es ist alles nur git. –

+0

@AlexBrown wie kann ich die Zusammenführung wiederherstellen? Ich bin mir nicht sicher, ob Sie damit vertraut sind, wie der Git-Flow-Prozess funktioniert. Wenn Sie jedoch ein Feature in git-flow fertiggestellt haben, wird es in einen Zweig "development" (Entwicklungszweig) zusammengeführt und der Feature-Zweig wird gelöscht. Wenn Sie sich entschließen, ein Release zu erstellen, erstellen Sie einen neuen Zweig aus der Entwicklung und nehmen Sie Ihre releasespezifischen Änderungen vor und fügen Sie diese dann in "Master" ein. Also, wie würde ich das Supercool-Feature, das in die Entwicklung integriert wurde, wiederherstellen? –

Antwort

12

Führen Sie diesen Befehl

git revert -m 1 <sha1 of M> 

Erklärung

Ihre Situation im Begriff ist, wie folgt:

A-B-----C---D-M  # master 
    \  /
    X-Y---Z-  # supercool-feature 

A, B, C und D waren in Dein Meister-BH nch, X, Y und Z in Ihrem Feature-Zweig. Wenn Sie git merge supercool-feature getan haben Git erstellt ein "merge commit" M für Sie. Dieses Commit umfasst alle Commits aus Ihrem Feature-Zweig sowie mögliche Fixes zum Beheben von Merge-Konflikten. Also, wenn du revert das commit, wird jede Änderung von deinem Feature Branch wieder weg sein.

+1

+1 für die Erstellung der ASCII-Kunst Anstrengung :) – bigge

+0

Teufel Anwalt: Wie kann es alles von supercool Feature XZY zu entfernen, und nicht alles von Master (CD)? Die Zusammenführung ist symmetrisch ... – mnagel

+0

Zusammenführungen sind nicht symmetrisch. 'git merge' betrachtet den Changeset von dem Zweig, der zusammengeführt werden soll (' git diff B ..Z') und macht es zu einem Commit. –

1

Eigentlich ist der Befehl

git revert -m 1 <sha1 of M> 

die entfernen M zurück auf Zweig bewegen X, Y, Z, die nicht die Hauptstrecke ist 1.

Verwandte Themen