it-swarm.com.de

"Git Pull" oder "Git Merge" zwischen Master- und Entwicklungszweigen

Ich habe meinen Zweig master und einen Zweig develop, um an einigen Änderungen zu arbeiten. Ich muss Änderungen von master in develop zusammenführen, werde aber irgendwann alles von develop in master zusammenführen. Ich habe zwei verschiedene Workflows im Sinn:

  1. git pull Origin master in develop Zweig
  2. git merge master in develop Zweig

Welches ist der beste Weg und warum?

239
Carson

Seien Sie vorsichtig mit Rebase. Wenn Sie Ihren Entwicklungszweig mit jemandem teilen, kann Rebase ein Chaos verursachen. Rebase ist nur für Ihre eigenen lokalen Niederlassungen geeignet.

Faustregel: Wenn Sie die Verzweigung auf Origin verschoben haben, verwenden Sie keine Rebase. Verwenden Sie stattdessen Zusammenführen.

101
Eric Leads

Dieser Workflow funktioniert am besten für mich:

git checkout -b develop

... einige Änderungen vornehmen ...

... Kündigungsstamm wurde aktualisiert ...

... Änderungen vornehmen, um sich zu entwickeln ...

git checkout master
git pull

... diese Änderungen wieder in die Entwicklung einbringen ...

git checkout develop
git rebase master

... noch ein paar Änderungen vornehmen ...

... verpflichten sie sich zu entwickeln ...

... sie in Master zusammenführen ...

git checkout master
git pull
git merge develop
345
Ian Lotinsky

Der beste Ansatz für diese Art von Dingen ist wahrscheinlich git rebase . Es ermöglicht Ihnen, Änderungen vom Master in Ihren Entwicklungszweig zu übernehmen, aber all Ihre Entwicklungsarbeiten "über" (später im Commit-Protokoll) dem Material vom Master zu überlassen. Wenn Ihre neue Arbeit abgeschlossen ist, ist das Zusammenführen zum Master sehr einfach.

23
divegeek

Wenn Sie den Entwicklungszweig nicht mit anderen teilen, würde ich ihn jedes Mal, wenn der Master aktualisiert wird, neu definieren. Auf diese Weise haben Sie keine Merge-Commits im gesamten Verlauf, sobald Sie den Entwicklungszweig wieder zum Master zusammenführen. Der Workflow würde in diesem Fall wie folgt aussehen:

> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull Origin master
> git rebase master develop

Die obigen Schritte stellen sicher, dass Ihr Entwicklungszweig immer über den neuesten Änderungen aus dem Hauptzweig informiert ist. Sobald Sie mit der Entwicklung der Verzweigung fertig sind und sie auf die neuesten Änderungen auf dem Master basiert, können Sie sie einfach wieder zusammenführen:

> git checkout -b master
> git merge develop
> git branch -d develop
5
KiRPiCH

meine Faustregel lautet:

rebase für Zweige mit dem gleichen Namen, merge ansonsten.

beispiele für gleiche Namen wären master, Origin/master und otherRemote/master.

wenn develop nur im lokalen Repository vorhanden ist und immer auf einem aktuellen Origin/master - Commit basiert, sollten Sie es master aufrufen und direkt dort arbeiten. Es vereinfacht Ihr Leben und stellt die Dinge so dar, wie sie tatsächlich sind: Sie entwickeln sich direkt auf dem Zweig master.

wenn develop gemeinsam genutzt wird, sollte es nicht auf master basieren, sondern nur mit --no-ff wieder eingebunden werden. Sie entwickeln auf develop. master und develop haben unterschiedliche Namen, weil wir wollen, dass sie unterschiedliche Dinge sind und getrennt bleiben. Machen Sie sie nicht gleich mit rebase.

1
hoijui