Wie erfolgreich halten Sie master-und Entwicklungs-Niederlassungen in sync? GIT
Ich mag zu tun Entwicklung auf meinem Entwicklungszweig dann merge in master, wenn ich bereit bin, push-to-Produktion. Solange ich das nicht tun alles, um den master-branch geht alles reibungslos.
Habe ich jedoch in Situationen, in denen, die ich begangen habe, etwas auf dem master-Zweig, der in Konflikt mit etwas, das geändert wurde, auf dem Entwicklungszweig. Wenn ich merge die Entwicklungs-branch in den master habe ich den Konflikt zu beheben. Keine große Sache, aber dann, um sicherzustellen, dass die Entwicklung Zweig hat alles, was in den master-Zweig (sicherstellen, dass Entwicklung ist up-to-date) ich merge im master-branch und am Ende mit der Lösung der Konflikte wieder.
Ich habe gehört, dass die rebasierung ist in der Regel schlecht, vor allem für Dinge, die Sie drängen sich öffentlich.
Gibt es eine bessere Art und Weise zu verwalten diese Art von setup?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Weg würde ich es machen, ist es Umgekehrt:
Lösung aller Konflikte beim Zusammenführen.
Obwohl git ist hervorragend, wenn es darum geht, miteinander zu verschmelzen und Handhabung Zweige, ich glaube nicht, dass es ist ein schneller Weg, um das lösen von Konflikten anderen als die manuelle, mühsame Arbeit mit 3-way-diff/merge-tools.
Auch, es hilft, das zu tun, was @cHao sagte in seiner Antwort unter - merge oft, Zusammenführen kleinen, und Sie haben kaum große merge-Konflikt-Situationen.
Regelmäßig merge vom master an Ihrem Zweig, und Konflikte zu lösen dann. (Wenn Sie dies tun, regelmäßig, Konflikte werden in der Regel sehr gering.)
Durch die Zeit, die der merge zurück in den master geschieht, die Entwicklung sollte nicht in Konflikt überhaupt.
Ich denke, Sie könnte nur noch ein paar Missverständnisse hier, die Sie mehr als alles, was technisch falsch.
Ersten, sollte man generell nicht einsetzen, die direkt auf den master-Zweig. Aus der Art, wie Sie beschrieben Ihre situation, ich bin mir nicht sicher, ob das passiert oder nicht, aber wenn es ist, versuchen Sie nicht, das zu tun.
Wenn Sie entdecken, dass etwas nicht sauber zusammengeführt master, Sie sollten nicht versuchen, das problem zu beheben, auf dem master selbst. Sie sollten stattdessen, beheben Sie das problem auf den feature-branch. Sobald Sie den Fehler behoben haben dort kannst du dann merge in master sauber.
Soweit Stellungswechsel geht, ist es völlig in Ordnung, zu verwenden, Stellungswechsel, bis Sie push zu einem remote-repository. Einmal haben Sie etwas gedrückt, um ein remote-repo, die Sie nicht wollen, um Stellungswechsel, so dann man Durcheinander Geschichte für jemand anderes, und git lässt sich nicht wirklich lösen das für Sie. Also keine Angst, Stellungswechsel, weiß nur, wenn es zu benutzen und wenn es nicht zu verwenden.
Einen Weg, den Sie vielleicht in der Lage sein zu verwenden rebasierung hier (wieder, vorausgesetzt, Sie haben nicht geschoben der Branche in Frage aus der Ferne) helfen bei deinem problem ist es, den feature-branch, die nicht sauber zusammengeführt werden master-und Stellungswechsel, Sie auf master. Diese wird dann erzwingen Sie zum beheben des Problems auf diesen Zweig. Sobald es behoben ist, wird der merge in den master sollte trivial sein (es sei denn, der master hat schon wieder verändert in der Zwischenzeit) und können Sie sauber verschmelzen zu meistern.
Gibt es viele tutorials zur Verfügung für git gibt, und Sie haben einige schöne code-Beispiele, die helfen auch. Hier ist eines der "klassischen" diejenigen, die, glaube ich, dass der hier beschriebene workflow funktioniert gut. http://nvie.com/posts/a-successful-git-branching-model/
Bitte beachten Sie, ich bin nicht die Billigung der bash-Skript set namens "git flow", das versucht, zu semi-automatisieren Sie den workflow gibt (diese Skripts funktionierte nicht sehr gut für uns, wenn wir versuchten Ihnen), aber der workflow selbst beschrieben, es funktioniert gut.
was ich sagen kann, entwickeln, die ist, wo alle neuen Sachen passiert. also, wenn das der Fall ist, Ableger zu entwickeln (Zweig). die Arbeit an diesem Zweig. wenn du fertig bist, einfach Zusammenführen zu entwickeln, in dem Zweig, um sicherzustellen, es ist up to date. dann, die Kasse entwickeln, verzweigen und Zusammenführen in Ihrer feature-Zweig in es. als die Leute in Ihrem team weiterhin um neue Funktionen hinzuzufügen, um die Entwicklung Zweig, irgendwann wird der manager ist gonna sein wie
okay, we're releasing
, so dass an diesem Punkt werden Sie merge master zu entwickeln (nur incase jemand einen Schurken commit auf master) und dann checkout master und Zusammenführen, entwickeln in Sie.hoffentlich niemand verpflichtet direkt zu entwickeln oder zu beherrschen. diese beiden bekommen nur zusammengelegt. ich hoffe auch, Sie tests, für die man während der Entwicklung einer Funktion und für nach eine Zusammenführung.
soweit
rebase
betroffen ist, ja, sagen Sie nicht es tun, nachdem Sie mitgeteilt habe, Ihre Niederlassung haben. also in diesem Fall Sie es nicht tun würden, entwickeln Filiale, da ist es freigegeben.Ich tun
Also master wird genau dev. Nur vergessen Sie nicht rebase dev-wenn Sie möchten, senden hotfix auf master.