2016-04-05 6 views
4

Unsere Firma Git Workflow ist wie folgt: Wir haben eine master Zweig, einige feature/* Niederlassungen, um neue Funktionen zu entwickeln, die zurück auf master zusammengeführt werden, wenn der Job fertig ist, und auch release/* Filialen. Diese Zweige werden vor einer Produktversion erstellt und sind für Fehlerbehebungen ohne neue Funktion vorgesehen. Diese Fehlerkorrekturen werden dann gelegentlich in den Zweig master zurückgemeldet.Git: Wie kann ich verhindern, dass ein bestimmtes Commit in einen anderen Zweig zusammengeführt wird?

Von Zeit zu Zeit kommt es vor, dass ein bestimmte in einem release/* Zweig begehen ist eine Veränderung, die wir tun nicht zurück zu master zusammenführen möchten: zum Beispiel, wenn die Versionsnummer erhöht wird. Da gibt es andere wichtige Fixes in der Branche, sicher jemand wird früher oder später übernehmen, sagte lokalen commit in master, etwas in der Hauptzweig zu brechen.

Die aktuelle „Lösung“ Ich weiß, ist über die release/* Niederlassung in master unmittelbar nach dem lokalen zu fusionieren begehen erfolgt, zurückkehren die lokale begehen und dann drücken. Es funktioniert irgendwie, aber die Geschichte ist nicht sauber. Darüber hinaus verhindert dies nicht, dass das lokale Commit mit einem anderen Zweig als master zusammengeführt wird.

Gibt es einen besseren Weg, dieses Problem im beschriebenen Workflow zu lösen?

Antwort

0

Warum isolieren die Fehlerkorrekturen auf dem release/* Zweig als einzelne Commits (d. H. Ohne die Release-Version Updates) und dann Rosinenpicken diese Commits zu master, wie ziemlich gut beschrieben here?

3

Soweit ich weiß, ist es nicht möglich, ein Commit zusammenzuführen, ohne auch alle seine Eltern-Commits zusammenzuführen, was sich anhört wie das, was Sie versuchen zu tun.

Eine geringfügige Änderung Ihres Workflows könnte dieses Problem jedoch beheben.

Ähnlich wie das Modell Git Flow können Sie einen Zweig hotfix/* erstellen, um den Fehler zu beheben, anstatt direkt an den Zweig release zu übergeben. Dieser Zweig sollte wahrscheinlich auf master basieren (beim ersten Festschreiben, das ein Elternteil von relevanten release Verzweigungen ist), und es sollte in master sowie alle release Zweige, die es betrifft, zusammengeführt werden.

Auf diese Weise müssen die Zweige release nie in master zusammengeführt werden und können für release-spezifische Fixes reserviert werden.

Verwandte Themen