2016-03-24 7 views
0

Ich habe Niederlassungen alpha, beta und master. Ich habe auch Niederlassungen feature_a, feature_b, feature_c und feature_d. ich dann:Wie füge ich bestimmte Zweige/Teil-Commits in Git zusammen?

  1. Merge feature_a in alpha
  2. Merge feature_b in alpha
  3. feature_c in alpha
  4. feature_d in alpha

Es gibt Probleme mit feature_bfeature_d (oder pe Merge Merge vielleicht haben sie einen Termin verpasst und werden noch getestet, aber der Rest ist bereit, in den Zweig beta zu gehen.

Wie würde ich in der Lage sein, nur zu verschmelzen wählen „Zweigen“ in den beta Zweig von alpha, so dass nur feature_a und feature_c bis verschmolzen werden? Bleiben Geschichte und Herkunft intakt (unter der Annahme, dass die Feature Branches beschnitten oder gelöscht werden)?

Ich rate etwas im Umfang von git merge beta feature_c...alpha, git merge beta feature_a...alpha (diese Befehle werden nicht funktionieren, aber das ist die Theorie hinter was ich bisher versucht habe).

+0

Angenommen, es gäbe eine Möglichkeit, eine solche partielle Zusammenführung durchzuführen, würden Sie zu einem späteren Zeitpunkt 'feature_b' und' feature_d' einbauen? –

+0

Ich bin mir nicht sicher, wo genau dein Konzept von dem, was git tut, wenn die Zusammenführung von den Schienen gegangen ist, aber ich denke, es hat. Siehe http://StackOverflow.com/A/35954651/1256452 für den Hintergrund (dies ist keine Antwort, nur ein paar Hintergrundinformationen zu, vielleicht, bringen Sie aus dem Unkraut, zurück in Richtung der Tracks). – torek

+0

Um Toreks Dialog hinzuzufügen, bringen Sie in Git normalerweise keinen Teil eines Zweigs in einen anderen Zweig, daher gibt es kein echtes Konzept der partiellen Zusammenführung. Es gibt 'git cherry-pick' und' git-rebase', die beide funktionell das geben, was Sie wollen, aber ich vermute, dass Sie zuerst Ihren Workflow überdenken sollten. –

Antwort

1

Wenn Sie nur einige Zweige zusammenführen möchten, können Sie einfach nur die Zweige zusammenführen:

git merge beta feature_a feature_a 

Nun, wenn Sie nur die Zweige an den Staat zusammenführen möchten, wo sie waren, wenn Sie die Freigabe gestartet (zB: wenn Sie sie in alpha zusammengeführt haben, dann könnten Sie sie zum Zeitpunkt dieser Zusammenführung markieren, mit Tags zB feature_a_release-n, etc ...; so dass in beta fusionieren könnten Sie tun:

git merge beta feature_a_release-n feature_b_release-n 

Wir auch einer alternativen denken kann, weil man zu Recht eigentlich wollen könnte, um die Funktionen untereinander, um verschmelzen sie alle zusammen zu testen, bevor Sie fortfahren zu beta. In diesem Fall sollten Sie anstelle eines alpha-Zweigs eine Verzweigung pro Freigabe erstellen, z. B .: alpha-release-n. Und wenn Sie nach dem Erstellen dieses Release-Zweigs ein Problem mit einem Feature-Zweig bemerken, können Sie einfach ein neues Feature erstellen, z. B. alpha-release-n.2, das den nicht gewünschten Zweig nicht enthält.


Finale subjektive wenn: dieser Workflow, mit einem Feature Zweig pro Team war das ein vorher von meiner Firma ein paar Jahren. Seitdem hat sich die R & D mehr als verdoppelt, und wir haben einige Fehler in diesem Workflow gefunden. (Zum Beispiel, weil eine späte Integration Konflikte nach ein paar Tagen aufdecken kann, was eine ziemlich späte Rückmeldung ist).

Ohne zu viel Details zu gehen, nachdem wir uns viel Mühe gegeben haben, verlässliche Nicht-Regressionstests in unserer gesamten Codebasis durchzuführen, verpflichten wir uns jetzt nur zu master und denken, dass es jederzeit in Produktion gehen kann .

Verwandte Themen