Wir sind erst kürzlich zu git gewechselt (mit dem gitflow-Verzweigungsmodell) und haben einige Probleme, wenn wir Änderungen rückgängig machen müssen.Git - wie man Änderungen richtig zurückstellt?
Leider entscheiden wir ziemlich oft, dass ein Feature in einem Release aufgrund von Problemen, die während der Regression oder zu irgendeinem Zeitpunkt des Testzyklus auftreten, nicht verfügbar sein wird. Wir können den Zusammenführungs-Commit für den Feature-Zweig einfach zurücksetzen, aber Feature-Verzweigungen, die nach dem Zusammenführen der fehlerhaften Änderung abgeschnitten wurden, enthalten diese Änderung und können sie zurück in die Entwicklung oder in einen Release-Zweig bringen, bevor sie freigegeben werden sollten.
Beispiel:
|reverts f1
develop-> X---o---o---Y---Z---R---P <- merge f2 to develop picks up f1
\ / \ /
f1-> A---B---C f2-> D---E
Aus dem Beispiel f1 geschnitten, bearbeitet, und fusionierte zurück zu entwickeln. f2 wird geschnitten und die Arbeit beginnt. f1 wird von develop at commit R zurückgesetzt. f2 wird dann vervollständigt und zurückgemischt, um bei commit P zu entwickeln. Commit P ist, wo das Problem ist: f1 kommt über dieses Commit zurück in die Entwicklung. Nun, gibt es etwas, was wir falsch machen mit den Rückgaben? Gibt es eine Möglichkeit, sicherzustellen, dass rückgängig gemachte Commits nicht zurück in die Entwicklung gelangen? Wir kehren mit 'revert -m1' zurück.
Gibt es irgendetwas, was wir falsch machen, wenn wir unsere Zusammenführungs-Commits rückgängig machen? Gibt es einen Weg, wie wir es so machen können, dass die Commits von f1, die f2 aufgenommen hat, nicht in die Zusammenführung mit einbezogen werden, um sie zu entwickeln? Müssen wir diese Commits für alle Forward-Feature-Zweige manuell zurücksetzen? Sollten wir stattdessen alle Feature-Zweige vom Master abschneiden, sodass wir wissen, dass sie keine Änderungen von Features übernehmen können, die zurückgesetzt werden könnten?
Alle Vorschläge sind willkommen, danke!
OK, es gibt also nichts, was wir wirklich tun können, um die Commits für Feature-Zweige, die f1 übernommen hätten, rückgängig zu machen. Ich muss etwas skripten, um diese Zweige zu identifizieren, die Zurücksetzung dieser Commits zu machen oder den R'-Commit aus dem Stamm auszuwählen. – user797963