2016-10-17 3 views
5

Ich frage mich, ob ich einen Fehler mache, indem ich erst Master in einen anderen Zweig mische und ihn dann wieder in Master mische.Git: Zusammenführen von Zweig in Master oder Master in Zweig

Angenommen, ich die folgenden Zweige erstellen, die jeweils mit einem separaten begehen:

  mkdir git_merging 
      cd git_merging/ 
      git init 
      touch on_master 
      git add . 
      git commit -m "Initial commit on master" 

      git checkout -b x 
      touch on_branch_x 
      git add . 
      git commit -m "Initial commit on branch x" 

      git checkout master 
      touch on_master_again 
      git add . 
      git commit -m "Commit on master after branching" 

Jetzt will ich fusionieren. Normalerweise ziehe ich zum ersten Master in x verschmelzen, und dann x in Master zu fusionieren:

  git checkout x 
      git merge -m "Merge master into x" master 
      echo "test results" 
      git checkout master 
      git merge x 

So kann ich die Dinge testen, bevor sie wieder in die Master-Zusammenführung, so dass ich immer einen funktionierenden Master Zweig haben. Soweit ich das beurteilen kann, gibt es keine funktionalen Unterschiede im Vergleich zu x direkt in Master-Zusammenführung:

  git merge -m "Merge x into master" x 
      git checkout x 
      git merge master 

In der Praxis habe ich oft Repositorys auftreten, die ausschließlich scheinen jedoch zurück in Master zu verschmelzen. Gibt es irgendwelche Nachteile für meinen Ansatz? Irgendwelche Gründe, warum ich das nicht tun sollte?

Antwort

8

Das ist eine ziemlich subjektive Frage, aber ich werde es weitergeben, weil ich denke, dass ich eine ziemlich objektive Antwort finden kann.

Es ist eine große Praxis, Master zurück in Ihre Branche zu verschmelzen, bevor Sie es zusammenführen. Was wäre, wenn jemand anderes etwas begangen hätte, das die Funktion, die Sie gerade implementiert haben, durchbrochen hat? Oder was passiert, wenn jemand den gleichen Code ändert, den Sie gemacht haben, und mögliche Konflikte bei der Zusammenführung verursacht hat? Ich schlage vor, Master zurück in Ihren Zweig sehr häufig zu verschmelzen. Dies verhindert nicht nur, dass Sie eineinhalb Tage Merge Conflicts lösen müssen (obwohl das ein Zeichen dafür sein könnte, dass Ihre Zweige zu groß sind, aber das ist eine andere Geschichte), sondern hält Sie auch auf dem Laufenden, wenn sich das Projekt ändert und entwickelt sich.

Einige könnten sagen, dass Sie Rebase Ihre Commits auf Master setzen sollten. Meine kurze Version ist: Ich ermutige Leute, Pull-Anfragen sehr früh im Entwicklungsprozess zu öffnen, selbst wenn eine Funktion nicht ausgeführt wird. Dies bedeutet, dass Sie Ihren Code wahrscheinlich auf einen Remote-Server (z. B. GitHub) übertragen. Um deine Commits zu rebasen, musst du mit einem neu geschriebenen Git-Verlauf pushen und Push erzwingen. Force Pushing ist eine schlechte Workflow-Entscheidung und sollte vermieden werden, da dies zu einer (fast) dauerhaften Beschädigung Ihres Commit-Verlaufs führen kann.

Also ja, zurück von Master rechts zusammenführen, bevor Sie Merge suchen, und so oft wie Sie können sonst. Wenn Sie GitHub verwenden, ermutige ich auch die neuen geschützten Branchen mithilfe der Funktion erzwingen Aktualisierung Zweige mit Master vor der Verschmelzung:

require branches to be updated before merging -- GitHub

Verwandte Themen