Ich habe die Git/Git-Svn Lernkurve gekämpft und letzte Nacht, als Teil dieser Lernkurve, habe ich etwas sehr, sehr schlecht. Ich habe es seitdem korrigiert, aber ich hoffe, den Fehler meiner Wege zu verstehen.Verwenden von Git-Svn: Pull, Merge oder Rebase?
Ich habe ein SVN-Repository, aus dem ich den Stamm und Zweige geklont habe (Tags habe ich ignoriert, da wir nicht an denen arbeiten). Mit git, habe ich Ortsvereine für jeden der Zweige, die ich brauche zur Zeit, mit zu arbeiten:
$ git checkout -b trunk svn/trunk
$ git checkout -b feature1 svn/branches/development/feature1
$ git checkout -b maint svn/branches/maintenance/previous-version
Ich habe feature1 meiner aktiven Zweig und machte ein paar Änderungen vor für ein paar Tage weg gezogen zu werden. Ich kam gestern zurück, wollte Änderungen am Kofferraum integrieren, so dass ich mit den neuesten und besten arbeiten konnte. Was ich getan habe, war ein komplettes Update aller Brances zuerst, über Git Svn Rebase (niemand sonst hatte auf der Feature1 Zweig gearbeitet). Mit allem, was von meinem SVN-Repository aktualisiert wurde, habe ich versucht, einen Rebase durchzuführen.
Mit feature1 als meine aktive Branche, ich habe eine "git Rebase Stamm" denken, dass ich Änderungen aus dem Stamm in die Feature1 Zweig ziehen würde. Es stellte sich heraus, dass ich sehr, sehr falsch lag. Nach dem Zusammenführen aller Konflikte, habe ich eine git svn dcommit und festgestellt, dass meine Änderungen auf den Stamm angewendet wurden.
Meine erste Frage ist einfach, wo war der Kernfehler in meinem Gedankenprozess? Meine zweite ist, nach viel Lesen und Googeln, sehe ich Menschen, die sich an Zügen, Zusammenführungen und Rebases beteiligen. Angesichts der Tatsache, dass ich die Änderungen in einem lokalen Zweig auf einen anderen lokalen Zweig zusammengeführt haben möchte, was sollte ich ich getan haben? Was ist die beste Vorgehensweise für dieses Szenario?
Danke für Ihre Hilfe.
Sie haben Recht, dass ich mit der Implementierung des Datenmodells nicht vertraut bin (haben Sie irgendwelche guten URIs?). Wenn ich meine Rebase-Anweisung lesen sollte, sollte ich es als "git rebase [* von * aktiver Zweig * zu *] trunk" lesen oder ist das sogar zu einschränkend? Vielen Dank. –
* Git von unten nach oben * (http://www.newartisans.com/blog_assets/git.from.bottom.up.pdf) und * Git Internals * (http://peepcode.com/products/git-internals -pdf) sind beide sehr gut für das Verständnis der Git-Struktur. (Git Internals kostet $ 9; ich empfehle den Screencast auf Git nicht auf der gleichen Seite). – Paul
Das ist eine gute Lektüre des Befehls. Es fällt mir schwer, mich daran zu erinnern, da das Objekt, auf das man sich einlässt, der ausgecheckte Zweig in vielen Git-Befehlen ist. – Paul