In einem Versuch, Git Nirvana zu erreichen, verbringe ich den Tag damit, zu lernen, wie man Rebase für Situationen nutzt, in denen ich gerade fusioniere.
Wenn ich einen meiner Meinung nach git 101-Flow durchlaufe (den ich unten darlege), muss ich push --force
meine Änderungen auf den Ursprung zurückschieben.
Ich bin nicht der einzige - ich weiß, dass dies überdachter Boden ist (siehe 1 , 2 , 3 , 4 , 5 ), und ich verstehe die technischen Gründe, warum eine Kraft notwendig ist. Mein Problem ist folgendes: Es gibt viele (viele) Blogeinträge, die das Lob der Rebase singen und wie es ihr Leben verändert hat (siehe 1 , 2 , 3 , 4, um einige aufzulisten ), aber keiner von ihnen erwähnt, dass dies push --force
Teil davon ist ihr Fluss. Fast jede Antwort auf die vorhandenen Fragen zum Stapelüberlauf sagt jedoch Dinge wie "Ja, wenn Sie neu aufbauen wollen, müssen Sie sie verwenden push --force
".
Angesichts der Anzahl und Religiosität von Rebase-Befürwortern muss ich glauben, dass die Verwendung von Push-Force kein fester Bestandteil eines Rebase-Flusses ist und dass sie etwas falsch machen, wenn man ihre Pushs oft erzwingen muss .
push --force
ist eine schlechte Sache .
Also hier ist mein Fluss. Auf welche Weise könnte ich ohne Kraft die gleichen Ergebnisse erzielen?
Einfaches Beispiel
Zwei Zweige:
- v1.0 - ein Release-Zweig, der nur Patches enthält
- Master - alles für die nächste Hauptversion.
Ich habe ein paar Patch-Commits und ein paar Commits für die nächste Version.
Ich möchte die Patches in meinen Master integrieren, damit sie für die nächste Version nicht verloren gehen. Vorerleuchtung Ich würde einfach:
git checkout master
git merge v1.0
Aber jetzt versuche ich es
git checkout master
git rebase v1.0
Also jetzt bin ich hier:
Zeit für:
git push
Kein Würfel.