2016-04-04 6 views
3

Kürzlich haben wir begonnen, Gitflow für unsere Projekte zu verwenden, und wir haben einige Probleme, die wir uns nicht verkneifen können.Feature-Zweig auf dem neuesten Stand halten

Wir haben die Standardeinstellung mit den master, develop, feature/xyz und hotfix Filialen. Angenommen, ich arbeite an einem Langzeit-Feature, nennen wir das feature/long-time. Meine Kollegen arbeiten in der Zwischenzeit an feature/short-time. Stellen Sie sich vor, dass sie nach einiger Arbeit feature/short-time in develop übergeben werden und ich gelegentlich feature/long-term begehe, damit sie meinen Fortschritt sehen können und es sicher gesichert ist.

Natürlich kann der feature/long-term den Zweig develop nicht zu lange ignorieren oder er wird zurückfallen. Wie können wir die Änderungen in regelmäßigen Abständen mit dem Zweig develop zum Zweig feature/long-term synchronisieren?

Ich habe über zwei Optionen kommen:

  • einfach git merge jeden jetzt tun und dann. Allerdings glaube ich, das ist nicht richtig nach Gitflow Philosophie
  • Ich habe git rebase ein paar Mal zu sehen, aber dies scheint nur zu funktionieren, wenn Sie nicht Ihre Änderungen an den Remote-Zweig schieben, ist das korrekt?

Zum Schluss: Wie halte ich meine Feature-Branche (n) korrekt auf dem neuesten Stand?

+0

Die Zusammenführung von 'development' in Ihre Feature-Zweig ist absolut in Ordnung und die einzige gute Wahl hier (Sie können nicht aus den Gründen, die Sie angegeben haben). Dies wird sogar als Beispiel im ursprünglichen [einleitenden Artikel] (http: // nvie.com/posts/a-Erfolgreich-Git-Verzweigung-Modell /) (siehe den zweiten Feature-Zweig, irgendwo unten, sie zusammenführen den Zweig zu entwickeln). – poke

Antwort

2

Dies bringt wieder die Fusion vs Rebase Diskussion, die mehrfach angegangen wurde. Für eine lange Geschichte können Sie überprüfen, here.
Wie du richtig gesagt hast, ist es nicht gut, wenn du deinen Zweig schiebst, wenn du deinen Zweig schiebst, wenn du deine Vorgeschichte änderst, würdest du den Push erzwingen, was nicht täglich gut ist, aber Rebasing ist generell "sauberer" als eine Zusammenführung, so: ist

  • Wenn Sie Ihren Zweig oft genug aus irgendeinem Grund (Code-Reviews, CI baut der Branche, etc.) drücken müssen die beste Wahl ein merge.
  • Wenn Sie völlig unabhängig arbeiten können, ohne Ihre Änderungen sehr oft zu schieben, ist wahrscheinlich rebase eine bessere Option.

Im Fall, dass Sie in einer sehr langen Aufgabe arbeiten, auch wenn rebase Ihre Hauptstrategie ist, von Zeit zu Zeit Fusion ist eine gute Idee, weil: 1. Ihre Änderungen im Remote-Repository gesichert werden von Zeit zu Zeit.
2. Es ist nicht praktikabel, eine große Anzahl von Commits zu rebasen, da das Diff Commit durch Commit berechnet wird, während es in einem Merge für alle Commits zur selben Zeit berechnet wird. Dies bedeutet, dass Sie für eine große Anzahl von Commits möglicherweise eine unnötig große Menge an Konflikten beheben müssen, die bei einer Zusammenführung auf eine Datei reduziert werden können.

Zusammenfassend würde ich empfehlen, die meiste Zeit umzulagern, um ein sauberes Repository zu behalten, aber von Zeit zu Zeit zu verschmelzen, um ein Backup Ihrer Filiale im Repo zu behalten und zukünftige Finanzen zu beleuchten.

Verwandte Themen