Git: Behebung eines Fehlers, der zwei Zweige betrifft

16

Ich stütze mein Git-Repo auf ein erfolgreiches Git-Verzweigungsmodell und habe mich gefragt, was passiert, wenn Sie diese Situation haben:

Bildbeschreibung hier eingeben

Angenommen, ich entwickle auf zwei Feature-Zweigen A und B, und B erfordert Code von A. Der X-Knoten führt einen Fehler in Feature A ein, der Zweig B betrifft. Dies wird jedoch auf Knoten Y nicht erkannt, auf dem Feature A und B zusammengeführt wurden Die Tests wurden durchgeführt, bevor erneut verzweigt und an der nächsten Iteration gearbeitet wurde.

Infolgedessen wird der Fehler von den Personen, die an Feature B arbeiten, auf Knoten Z gefunden. In dieser Phase wird entschieden, dass eine Fehlerbehebung erforderlich ist. Dieser Fix sollte auf beide Features angewendet werden, da die Personen, die an Feature A arbeiten, auch den Bug behoben haben müssen, da er Teil ihres Features ist.

Soll eine Bugfix-Verzweigung aus dem neuesten Knoten von Feature A (der Verzweigung aus Knoten Y) erstellt und dann mit Feature A zusammengeführt werden? Nach welcher Zeit werden beide Features wieder zu Develop zusammengeführt und vor dem Verzweigen getestet?

Das Problem dabei ist, dass beide Zweige zusammengeführt werden müssen, um das Problem zu beheben. Gibt es eine Möglichkeit, den Verlauf am Knoten Y zu ändern, da Feature B den Code in Feature A nicht berührt, indem das Update implementiert wird, und die Verzweigung von Feature B weiterhin nicht zusammengeführt werden kann, obwohl der feste Code von Feature A vorhanden ist?

Mild verwandt: Verzweigungskonvention für Git-Bugs

Aram Kocharyan
quelle
6
Können Sie den Fehler nicht einfach im Zweig "Entwickeln" beheben und ihn dann in Feature A und Feature B zusammenführen?
Tdammers
Hmm, das scheint am besten zu sein. Es könnte Zusammenführungskonflikte in Feature A geben, aber ich denke, das ist hier unvermeidlich.
Aram Kocharyan
Wenn Sie in der 'development'-Verzweigung keine weitere Entwicklung durchgeführt haben und der Bugfix keine Änderungen in der' feature A'-Verzweigung überlappt, werden Sie keine Konflikte bekommen.
Tdammers

Antworten:

24

Verwenden Sie ein bestimmtes Commit, um den Fehler in einem Zweig zu beheben, und wählen Sie dann das Commit in dem anderen Zweig aus.

Christian Palmstierna
quelle
Das funktioniert gut, Prost.
Aram Kocharyan
5

Vermutlich gibt es keinen Fehler in A oder X. Beheben Sie den Fehler in Zweig B, in dem er gefunden wurde. Der Fix wird im normalen Verlauf der Ereignisse auf X und A übertragen.

Kevin Cline
quelle
Danke, das ist auch machbar, solange der Fehler Feature A nicht betrifft.
Aram Kocharyan
0

Obwohl dies kein beliebter Arbeitsablauf in gitMercurial ist, besteht ein in Mercurial beliebter Arbeitsablauf darin , auf Revision zu aktualisieren X, den Fehler dort zu beheben (als X2 ) und dann die Zusammenführung zu wiederholen Y(was ein Paar Zusammenführungen in Mercurial gewesen wäre).

In der Tat ist dieser Workflow einfacher, gitda nach dem Wechsel von allen Yauf Y2 die Refs auf das Original Yverloren gehen und es schließlich Müll gesammelt wird. In hätten hgSie diese Commits manuell entfernen müssen, um Ihr Repository aufzuräumen.

Mark Booth
quelle