Wenn Sie keinen Unterschied feststellen, haben Sie vermutlich Ihre Änderungen verloren. Sie können wahrscheinlich verwenden git reflog
, um den Zweig zu identifizieren, der vor der Rebase vorhanden war, und git reset --hard <my-branch-tip-before-rebase>
um den ursprünglichen Zweig zurückzugewinnen. Und ja, Sie müssen den Prozess erneut durchlaufen. :-(
Ich bin mir nicht ganz sicher, wie es dazu kam, dass sie gleich aussahen. Ich hätte erwartet, mit dem Befehl, den Sie gegeben haben, Folgendes zu sehen:
1 = 2 = 3 = 4 (master)
\ \
\ 5' = 6' = 8' (my_branch)
\
5 = 6 = 7
In diesem Fall hätten Sie wahrscheinlich Folgendes verwenden sollen rebase --onto
:
git rebase --onto master <commit id for 6> my_branch
Das hätte Ihnen eine Grafik hinterlassen, die so aussah:
1 = 2 = 3 = 4 (master)
\ \
\ 8' (my_branch)
\
5 = 6 = 7
Um Ihre Änderungen zu verlieren, ist ein wenig Übung im Umgang mit Zusammenführungskonflikten erforderlich, insbesondere wenn Sie ein paar große Blöcke haben, die fast identisch aussehen. Ich greife immer auf den tatsächlichen Unterschied zurück, der durch ein Commit eingeführt wurde, und auf den Versuch, diese Änderung herauszufiltern und sie auf angemessene Weise mit dem zu verbinden, was sich bereits in der Branche befindet. Ich kann leicht sehen, wie Ihre Änderung dort verloren gegangen sein kann.
Eine Sache, an die man sich erinnern sollte. Wenn Sie nicht mit einer Reihe von Zusammenführungskonflikten rechnen - weil Sie nicht der Meinung sind, dass die Quellen ausreichend voneinander abweichen, ist das Sehen eine Warnung, wenn Sie etwas falsch machen. Es ist gut, eine Sicherungskopie zu erstellen, indem Sie git rebase --abort
die Zweige untersuchen und erneut prüfen, ob Sie einen Konflikt erwarten. Stellen Sie sicher, dass Sie sich notieren, wo der Konflikt aufgetreten ist (normalerweise wird ein "Anwenden ..." angezeigt, bevor Rebase Sie zur Befehlszeile führt). Das ist normalerweise ein guter Anfang.
Manchmal sind Konflikte unvermeidbar und mühsam zu lösen. Aber ich vermute, mit etwas Übung werden Sie weniger auf dieses Problem stoßen.
Weitere Informationen zum Transplantieren von Änderungen zwischen Zweigen finden Sie auf der Manpage zu git rebase . Suchen Sie nach "rebase --onto". Der erste Treffer sollte Sie in einem Abschnitt landen, in dem es darum geht, Änderungen in einen anderen Zweig zu übertragen.
git rebase --skip
(statt--continue
) getan haben, ist es möglich, dass Sie eine Änderung "übersprungen" haben, die während der Rebase tatsächlich noch bedeutende Änderungen hatte?