Wie baue ich eine Kette von lokalen Git-Filialen auf?

Angenommen, ich habe eine Kette von lokalen Git-Zweigen, wie folgt:

       master    branch1   branch2
          |         |         |
o----o----o----A----B----C----D

Ich ziehe einen Upstream-Wechsel auf den Master-Zweig:

              branch1   branch2
                 |         |
            A----B----C----D
           /
o----o----o----o
               |
            master

Jetzt rebase ich branch1 und gebe mir folgendes:

                        branch2
                           |
            A----B----C----D
           /          
o----o----o----o----A'---B'
               |         |
            master    branch1

Beachten Sie, dass die Commits A und B aufgrund der Neugründung von Branch1 in A 'und B' umgeschrieben wurden.

Hier ist mein Problem: Jetzt möchte ich branch2 rebase. Die offensichtliche Syntax istgit rebase branch1 branch2, aber das geht definitiv nicht. Ich möchte, dass es C und D einfach auf branch1 erneut anwendet, aber stattdessen versucht es, A und A 'in Einklang zu bringen und betrachtet sie als widersprüchlich.

Das funktioniert:

git rebase --onto branch1 branch2^^ branch2

Dies setzt voraus, dass ich weiß, dass branch2 genau 2 Commits über die vorherige branch1-Referenz hinaus hat.

Schon seitgit rebase --onto funktioniert, gibt es einen einzeiligen Git-Befehl, der branch2 über einem neu basierten branch1 in einer Weise rebasiert, dass ich nicht genau wissen muss, wie viele Commits Teil von branch2 waren? (Ich möchte für das mittlere Argument eine magische Referenz anstelle von branch2 ^^ angeben.)

Oder gibt es einen anderen Ansatz, den ich übersehen habe?

Ich würde mich am meisten für eine Lösung interessieren, die sich gut auf extreme Fälle skalieren lässt, nicht nur für zwei Zweige. Angenommen, ich habe mehr als 5 lokale Zweige, die alle miteinander verkettet sind, und ich möchte sie alle zusammen neu zusammenfassen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage