Im Moment, in dem Git meinen Kopf rein macht, kann ich nicht die beste Lösung für Folgendes finden.
Es gibt zwei Zweige, einen als Master und einen als mobiledevicesupport . Ich möchte mobiledevicesupport als kontinuierlichen Zweig beibehalten, der mit dem Master-Zweig zusammengeführt / synchronisiert wird, wenn mobiledevicesupport stabil ist. Dies würde Änderungen von mobiledevicesupport in master zusammenführen, aber auch alle Änderungen von master in mobiledevicesupport zusammenführen, so dass der Zweig weiter bearbeitet und die Funktionen verbessert oder ergänzt werden können. Dies muss mit einem zentralen Repository und mehreren Entwicklern funktionieren.
Bitte ein Beispiel für ähnliche Workflows, die andere Leute verwenden, oder sagen Sie mir einfach, ob diese Idee dumm ist und ich andere Optionen in Betracht ziehen sollte. Im Moment scheint der Workflow solide zu sein, aber ich weiß einfach nicht, wie ich Git auf diese Weise zum Laufen bringen kann.
Vielen Dank, alle Hilfe sehr geschätzt.
Update 1: Wenn ich Master in Mobiledevicesupport und Mobiledevice Support in Master zusammenführen wollte, erhalte ich replizierte Commits in beiden Zweigen. Oder ist git klug genug, um herauszufinden, dass ich die neuesten Änderungen von Zweig A in Zweig B übernommen und Merge Commit C zu Zweig B hinzugefügt habe. Und ich habe die neuesten Änderungen von Zweig B in Zweig A gezogen und Merge Commit D zu Zweig hinzugefügt EIN?
Ich wollte ein Bild posten, habe aber nicht genug Ruf dafür, daher muss die folgende Abbildung ausreichen. Zwei Zweige, die ununterbrochen laufen und häufig in beide Richtungen verschmelzen. Das Wichtigste, bei dem ich mir nicht sicher bin, ist, wie Git die Commits ausspielt und ob es bei Zusammenführungen einen Zweig mit den Commits des anderen Zweigs füllt oder ob es sauber bleibt. Ich habe Rebase schon einmal verwendet, aber es scheint den Zweig zu beenden und alle Commits in den Master zu übertragen, oder ich habe es falsch gemacht. Danke für die bisherige Hilfe.
master
A--B--C-----H--I--J--M--N
\ / \
mobile \ / \
D--E--F--G--------K--L
Antworten:
Ja, tu es einfach
um die Unterstützung mobiler Geräte mit dem Master synchron zu halten
Wenn Sie dann bereit sind, die Unterstützung für mobile Geräte in den Master zu integrieren, führen Sie zuerst den Master wie oben zusammen und dann ...
und das ist es.
Die Annahme hier ist, dass mobilexxx ein Themenzweig mit Arbeiten ist, die noch nicht bereit sind, in Ihren Hauptzweig zu gehen. Verschmelzen Sie also nur dann mit dem Master, wenn die Unterstützung für mobile Geräte an einem guten Ort ist
quelle
Wann immer Sie die Änderungen vom Master in Ihren Arbeitszweig übernehmen möchten, führen Sie a aus
git rebase <remote>/master
. Wenn es Konflikte gibt. Löse sie.Wenn Ihr Arbeitszweig fertig ist, starten Sie ihn erneut und führen Sie ihn dann aus
git push <remote> HEAD:master
. Dadurch wird der Hauptzweig auf der Fernbedienung (zentrales Repo) aktualisiert.quelle
git branch --contains <commit>
. B.) verlassen können .Der Ansatz von concept47 ist der richtige Weg, aber ich würde empfehlen, mit der Option --no-ff zu verschmelzen, um Ihren Commit-Verlauf klar zu halten.
quelle
Ja, ich stimme Ihrem Ansatz zu. Sie können mobiledevicesupport in master zusammenführen
Ebenso können Sie Master in mobiledevicesupport zusammenführen.
F. Ob Cross Merging ein Problem ist oder nicht.
A. Nun, es hängt von den Commits ab, die in Mobile * Branch und Master Branch seit der letzten Synchronisierung vorgenommen wurden. Nehmen Sie das folgende Beispiel: Nach der letzten Synchronisierung werden diese Zweige wie folgt festgeschrieben
Angenommen, Commit B hat einige Änderungen an der Datei a.txt vorgenommen, und Commit D hat auch einige Änderungen an a.txt vorgenommen. Lassen Sie uns einen Blick auf die Auswirkungen der einzelnen Zusammenführungsvorgänge werfen.
Nun sind zwei Arten der Zusammenführung möglich
Git wird zuerst versuchen, FF zusammenzuführen, und wenn es feststellt, dass Konflikte nicht von git gelöst werden können. Die Zusammenführung schlägt fehl und Sie werden zum Zusammenführen aufgefordert. In diesem Fall wird ein neues Commit ausgeführt, das für die Lösung von Konflikten in a.txt verantwortlich ist.
Unterm Strich ist Cross-Merging also kein Problem, und letztendlich müssen Sie es tun, und genau das bedeutet Synchronisierung. Stellen Sie sicher, dass Sie sich beim Zusammenführen von Zweigen die Hände schmutzig machen, bevor Sie etwas in der Produktion tun.
quelle
Die akzeptierte Antwort über Git Merge erledigt den Job, hinterlässt jedoch eine unordentliche Commit-Geschichte. Der richtige Weg sollte über die folgenden Schritte "neu festgelegt" werden (vorausgesetzt, Sie möchten Ihren Feature-Zweig mit der Entwicklung in Verbindung halten, bevor Sie den letzten Push vor PR ausführen ).
1
git fetch
aus Ihrem Feature-Zweig (stellen Sie sicher, dass der Feature-Zweig, an dem Sie arbeiten, auf dem neuesten Stand ist)2
git rebase origin/develop
3 Sollten Konflikte auftreten, lösen Sie diese nacheinander
4 verwenden,
git rebase --continue
sobald alle Konflikte behandelt sind5
git push --force
quelle
Sie denken in die richtige Richtung. Master mit mobiledevicesupport kontinuierlich zusammenführen und mobiledevicesupport mit master zusammenführen, wenn mobiledevicesupport stabil ist. Jeder Entwickler hat seine eigene Niederlassung und kann je nach Rolle entweder zum Master- oder zum Mobilgeräte-Support zusammengeführt werden.
quelle