Stimmt es, dass git rebase
anfälliger für Konflikte ist als git merge
? Ich habe das vorher gehört und es ist in dieser Beitrag
Ich spekuliere hier auf Anekdoten, aber ich vermute, dass die allgemeine Angst um das Rebasing von zwei primären Orten herrührt:
- Aufgrund der Mechanismen von Git-Rebase sind Zusammenführungskonflikte häufiger und scheinbar schwieriger zu handhaben
Der Autor geht nicht ins Detail, um diese Behauptung zu rechtfertigen, aber es ist nicht das erste Mal, dass ich es höre.
Ich habe gehört und verstanden, dass Rebase-Wiederholungen Commit durch Commit mehrere Male mit dem gleichen Konflikt enden, aber ich habe das nie erlebt. Vielleicht ist das rerere
Verhalten jetzt standardmäßig in git rebase
?
Ich versuche, in meinem Team eine Richtlinie zur Rückerstattung vorzuschlagen, aber ich möchte dieses Problem ansprechen, wenn es zutreffend ist.
Ehrlich gesagt würde ich erwarten, die gleiche Anzahl von Konflikten zu haben, da ein Wechsel in beiden Zweigen mit einem Konflikt enden wird, unabhängig von der Rebase oder der Fusion. Mit anderen Worten, der Konflikt wird nicht durch die Konvergenz der Zweige am Ende verursacht, sondern durch parallele Änderungen derselben Zeile
Sie haben am Ende mehr Konflikte mit einer Rebase, wenn Sie mehrere Commits haben. Dies liegt daran, dass Sie beim Rebase Konflikte für jeden Commit lösen müssen. Das bedeutet, wenn Sie versuchen, einen Zweig, der 5 Commits vor Ihrem Master ist, neu zu erstellen, und Sie einen Merge-Konflikt im ersten dieser 5 Commits eingeführt haben, müssen Sie diesen Konflikt in jedem der folgenden Commits lösen.
>Rebasing sollte das Problem oft beheben. Es ist auch erwähnenswert, dass es eine einfachere Strategie als Rebase gibt, wenn Sie sich auf einen einzelnen Commit beschränken möchten.
Nehmen wir an, Sie haben 5 Commits, die Sie im Master zusammenführen möchten, aber es ist nur ein Feature, das leicht in einem Commit mit einer beschreibenden Nachricht beschrieben werden kann.
%Vor%Wenn Sie nur ein einzelnes Commit wünschen, ist dies viel einfacher und erfüllt die gleiche Aufgabe wie das Rebasieren.
Tags und Links git git-rebase git-merge