2016-10-26 2 views
0

Ich habe Setup Gitlab und ich versuche, den Workflow hier erwähnt zu folgen: Gitlab Production branch flow.Wie vorherige fusionieren verpflichtet

Jetzt sieht mein Repository wie folgt aus:

enter image description here

Und ich habe wurde gebeten, nur commit A des Zweigs master mit dem Zweig production zusammenzuführen. Was ist der beste Weg, dies zu tun?

Sollte ich den git cherry-pick Befehl? Ich lese ich werde die Versionsgeschichte mit der cherry-pick verlieren.

Wenn ich diese Situation habe, in der ich eine der früheren Commits von master Zweig zu der production Zweig zusammenführen muss, wie gehe ich damit um?

Ich bin an dieser fest. Jede Hilfe wird sehr geschätzt.

Danke,

Update: Von Master-Zweig I nur bestimmte Commits schieben kann: git push <remotename> <commit SHA>:<remotebranchname>

gefunden Antwort hier: How can I push a specific commit to a remote, and not previous commits?

+0

gibt es etwas zwischen A und X? – max630

+0

Nichts. x ist das neueste Commit, das mit dem Produktionszweig zusammengeführt und auf dem Produktionsserver bereitgestellt wird. Tatsächlich stellt Commit A in meinem Repository ein kleines Feature dar. Es wurde fertig gestellt, aber nicht zur Produktion gebracht und ich arbeitete weiter an anderen Features. Jetzt will ich nur noch das Feature A zur Produktion schieben. –

+0

dann können Sie einfach den A-Commit zusammenführen. Tatsächlich legt die gegebene Antwort genau dies nahe. – max630

Antwort

1

Cherry Picking ist lebensfähig, wenn Sie gezielt die Änderungen in wählenden verpflichtet. Es ist am vorteilhaftesten, wenn die Commits, die Sie anwenden müssen, nicht in der sequentiellen Reihenfolge aufgetreten sind. Persönlich würde ich Ihnen nicht empfehlen, dies in Master-/Produktionsfilialen zu tun, da es keine gute langfristige Veröffentlichungsstrategie ist.

ist mein Rat auf git Flow basiert, die ich kenne, ist etwas anders Ansatz Gitlab ist.

Wenn es sich um aktuelle Versionen handelt, sollten Sie einen Freigabefunktionszweig verwenden, in dem Sie in diesem Fall einen Freigabebeitrag für das Commit A erstellen und dann in die Produktion einbinden.

Wenn dies Bugfix/Hotfixes sind, die einige Commits aber nicht alle (erfordern Rosinenpickerei) benötigen, könnten Sie einen Hotfix-Zweig von Ihrem Produktionszweig erstellen, wählen Sie die Commit, die Sie benötigen, zuerst diesen Zweig, dann beim Testen ist finalisiert, fusioniere das zurück in die Produktion. Wenn irgendwelche zusätzlichen Änderungen oder Commits in diesem Zweig angewendet werden, müssen sie wieder zusammengeführt werden, was auch immer Ihr Entwicklungszweig ist.