2017-03-25 3 views
0

Ich habe ein System-Setup in einem privaten Git, in dem es 3 Hauptzweige gibt. (Entwicklung, Beta, Release) Commits werden zur Entwicklung gemacht (das ist mein Masterzweig), aber hier bin ich festgefahren. Ich möchte bestimmte Commits von der Entwicklung in die Beta-Version schieben, dann werden diese von der Beta zur Veröffentlichung verpflichtet. Auf diese Weise kann ich einen Zweig öffnen und einen Entwicklungs-Build kompilieren oder den Beta-Zweig öffnen und eine Version kompilieren, die an Betatester gesendet wird, oder den Versionszweig öffnen und eine stabile, öffentliche Version kompilieren. Es ist nicht nur ich zu diesem privaten Repo verpflichten, so dass einige weitere Commits gemacht werden können, die nicht bereit für den Beta-Zweig sind, während andere Commits bereit sind.Nimm Commits von Zweig zu Zweig

Ich hoffe, das hat Sinn gemacht, aber wenn Sie einen Vorschlag für ein besseres System haben, das ich stattdessen verwenden könnte, würde ich es gerne hören!

TL; DR: Schlechter Workflow, versuchte es zum Laufen zu bringen, bekam stattdessen einen neuen Workflow.

+1

Sie scheinen sehr verwirrt über grundlegende Workflow in der Versionskontrolle. Normalerweise würden Sie einfach von einem Zweig zum nächsten verschmelzen, aber es ist nicht klar, was Sie hier wirklich fragen. –

+1

Klingt nach einfachem 'checkout' ->' commit' -> 'merge' Workflow – peter

+0

@TimBiegeleisen Entschuldigung, ich war nicht klar genug, aber meine Antwort auf Guido Garcia zu lesen, könnte ein wenig mehr klären, als er mein Problem löste. – Yudowat

Antwort

1

Sie können git cherry-pick verwenden, um einige Commits in "Entwicklung" auf einen Ihrer Zweige ("beta", "release") anzuwenden. Siehe auch this question.

Das löst dein Problem, aber du solltest über deinen ganzen Git Workflow nachdenken. Normalerweise möchten Sie Commits in Ihren Zweig "Entwicklung" schieben und dann diesen Zweig mit "Beta" (dem nächsten Zweig) zusammenführen. View Cherry-Pick als Ausnahme, nicht die Regel.

+1

Oder "Rebase auf" könnte eine Option sein. –

+0

Ich war mir nicht sicher, ob cherry-pick das ist, was ich suche mit einigen Commits, die sich gegenseitig mehrere Male nehmen, bis sie den 'release'-Zweig erreichen, aber nachdem ich deine Antwort gesehen habe, habe ich ein schnelles Test-Repo und alles erstellt funktioniert soweit gut. Vielen Dank! – Yudowat

+2

Nach meiner Erfahrung ist Cherry-Pick etwas, das nur gelegentlich verwendet wird. Wenn Sie feststellen, dass Sie bei jedem Sprint häufig einen "cherry-pick" verwenden, kann dies ein Zeichen dafür sein, dass Ihr Zweig-Workflow ein Problem hat oder schlecht konzipiert ist. –

1

Es klingt wie Sie git merge verwenden sollten. Ich schlage vor, dass Sie über verschiedene Workflows mit Git lernen. Git branching and tagging best practices hat einige großartige Vorschläge.

+0

Das Zusammenführen ist nicht ganz das, wonach ich suche, da einige Änderungen, die nicht zur Zusammenführung mit der nächsten Ebene bereit sind, vor denen liegen, die zusammengefügt werden können, und iirc würde alle Übertragungen zusammenführen, nicht spezifische – Yudowat

+0

@ Yudowat Es scheint mir, dass der Zweig "Entwicklung" eine Warteschlange sein sollte, in der Feature Branches zusammengeführt werden können, die zur Veröffentlichung bereit sind. Vermutlich möchten Sie mehrere neue Funktionen auf einmal und nicht einzeln nacheinander veröffentlichen. Wenn ein Feature-Zweig nicht bereit ist, sollte er wahrscheinlich noch nicht in den Entwicklungszweig integriert werden. –

Verwandte Themen