Ich stütze mein Git-Repo auf ein erfolgreiches Git-Verzweigungsmodell und habe mich gefragt, was passiert, wenn Sie diese Situation haben:
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
Antworten:
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.
quelle
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.
quelle
Obwohl dies kein beliebter Arbeitsablauf in
git
Mercurial ist, besteht ein in Mercurial beliebter Arbeitsablauf darin , auf Revision zu aktualisierenX
, den Fehler dort zu beheben (alsX
2 ) und dann die Zusammenführung zu wiederholenY
(was ein Paar Zusammenführungen in Mercurial gewesen wäre).In der Tat ist dieser Workflow einfacher,
git
da nach dem Wechsel von allenY
aufY
2 die Refs auf das OriginalY
verloren gehen und es schließlich Müll gesammelt wird. In hättenhg
Sie diese Commits manuell entfernen müssen, um Ihr Repository aufzuräumen.quelle