Verschmelzen mit Zweigen, spielt es keine Rolle, mit welchem ​​Sie verschmelzen?

Lesezeit: 4 Minuten

Benutzeravatar von ant2009
Ameise2009

Git-Version 1.7.5.4

Ich habe etwa 5 Filialen. Alle aus dem gleichen Anfangszweig.

Ich möchte 2 Filialen zusammenführen. sagen, branch1 und branch2. Diese Zweige haben viele Unterschiede.

Ich arbeite derzeit an Branch1 und habe gerade festgestellt, dass ich in Branch2 einige Änderungen vorgenommen habe, die ich in Branch1 haben möchte.

wie fusioniert man am besten?

checkout branch2 and merge branch1

oder

checkout branch1 and merge branch2

Oder spielt es keine Rolle, welchen Zweig Sie auschecken müssen, um ihn mit einem anderen Zweig zusammenzuführen?

Benutzeravatar von Adam Dymitruk
Adam Dymitruk

Normalerweise spielt es keine Rolle, ob es sich bei beiden Branches um Topic- oder Feature-Branches handelt.

Wenn Sie jedoch einen Integrationszweig oder einen Zweig haben, der markiert, was veröffentlicht wurde, möchten Sie auf jeden Fall den langlebigen Integrationszweig als den ausgecheckten verwenden und den anderen darin zusammenführen.

Der Grund dafür ist, dass der Merge-Commit den ersten übergeordneten Commit als denjenigen markiert, der vom Hauptzweig kommt. Ihre baumartige Spezifikation für die Historie für diesen Zweig ist jetzt einfach. Um den Commit zu finden, der der viertletzte in diesem Zweig war, müssen Sie einfach

git show head~4

Wenn Sie irgendwo dazwischen aus dem anderen Zweig zusammengeführt haben, müssten Sie explizit zum zweiten Commit wechseln, wo immer die Zusammenführung in die andere Richtung erfolgt ist:

git show head^^2^^

Dies kann aus einem anderen Grund zu Problemen mit großen Zweigen führen; Das Zusammenführen in Themen- oder Funktionszweigen wird als “Rückverschmelzung” bezeichnet und ist keine gute Idee. Ich erinnere mich, dass Linus Torvalds seinen Kopf sprengte, als Mitwirkende das taten. Es würde ihm nicht erlauben, sauber zu trennen, welche Funktionen er für eine größere Überarbeitung zusammenführen wollte, da die Funktionsverzweigungen eine alte Testzusammenführung einbringen würden, die Dinge enthielt, die er nicht mehr haben möchte.

Wenn also am Ende ein Zweig wichtiger und mehr als nur ein Feature ist, überprüfen Sie ihn und führen Sie ihn von dort aus zusammen. Sie können den Verlauf leicht einsehen, da Sie wissen, dass der erste Elternteil immer dort ist, wo sich zuvor der Zweig befand. Wenn Sie dies nicht tun, müssen Sie sich darauf verlassen, die Merge-Commit-Nachrichten zu lesen, und es macht einfach nicht so viel Spaß. 🙂

Ich habe einen Artikel über BpF geschrieben, der eine rigorose Methode zur Organisation von Filialen zeigt: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

  • Prost! Diese Fehler machen die Verlaufsnavigation zu einem Alptraum.

    – Adam Dymitruk

    4. Oktober 2011 um 17:42 Uhr

Ich gehe davon aus, dass Sie wirklich den gesamten Zweig zusammenführen möchten, anstatt nur das eine oder andere Commit herauszupicken. Auch das, was ich unten sage, basiert stark darauf sehr hilfreicher Blogbeitrag von Junio ​​C. Hamanoder Git-Betreuer, dessen Lektüre ich dringend empfehlen würde, wenn Sie mehr über die Philosophie des Verzweigens erfahren möchten.

Leider enthält Ihre Frage nicht wirklich genügend Informationen, um diesbezüglich fundierte Ratschläge zu geben, da die Frage entscheidend von der abhängt Zweck jeder Filiale. In einem gängigen Szenario könnte man beispielsweise a master Zweig, von dem man immer eine stabile Version generieren können sollte. Wenn jemand der Software eine neue Funktion hinzufügen möchte, kann er einen Topic-Zweig vom Master namens erstellen awesome-feature an denen sie arbeiten, möglicherweise rebasen, gründlich testen und so weiter. Wenn alle mit diesem Zweig zufrieden sind, macht es nur Sinn zu fusionieren awesome-feature hinein master, Nicht umgekehrt. (Umgekehrt würde ungefähr bedeuten, dass alles in master dazu beiträgt, das “tolle Feature” zu implementieren, für das der Topic-Zweig da ist.) Welcher Weg richtig ist, können Sie jedoch nur sagen, weil wir den Zweck jedes Zweigs kennen .

Das Verzweigen und Zusammenführen ist in Git so einfach, dass es viele verschiedene Workflows unterstützt, von sehr strukturiertzu eher einfacher, bis völlig unstrukturiert. Mit “völlig unstrukturiert” meine ich, dass es mehrere verschiedene Entwicklungszweige gibt und die Leute auf beliebige Weise zwischen ihnen verschmelzen, um die Funktionen zu integrieren, die sie in einem bestimmten Zweig haben möchten – wenn Sie sich in einer solchen Situation befinden, in der es nicht klar ist Zweck für jeden Zweig definiert, spielt es keine Rolle, ob Sie zusammenführen branch1 hinein branch2 oder umgekehrt. Ich finde es jedoch viel hilfreicher, einen klareren Zweck für jeden Zweig zu haben, in diesem Fall spielt es eine Rolle, wie Sie zwei Zweige zusammenführen.

1429710cookie-checkVerschmelzen mit Zweigen, spielt es keine Rolle, mit welchem ​​Sie verschmelzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy