2012-11-01 13 views
5

Ho spesso sentito dire che l'uso di git rebase riduce il numero di conflitti di merge rispetto a git merge, ma non ho mai trovato una spiegazione del perché questo è il caso.Perché git rebase ha spesso meno conflitti di fusione rispetto a un'unione?

La semplice riproduzione di una serie di modifiche in cima a un'altra serie di modifiche non dissipa magicamente il conflitto intrinseco quando due persone modificano entrambe la stessa riga di codice, quindi cosa rende migliore la rebase?

Qualcuno può fornire un semplice esempio in cui un'unione avrebbe conflitti ma un rebase no?

AGGIORNAMENTO: Dopo 3 anni aggiuntivi di esperienza git, sono arrivato a credere che la mia premessa originale fosse falsa: i conflitti sono ugualmente probabili in rebase vs merge. Tuttavia, Rebase rende la storia più facile da comprendere e seleziona o riavvolge quando necessario.

+0

In realtà, rebase può darti più conflitti che unire: considera due commit, uno introduce alcune modifiche in conflitto e un altro lo ripristina. Durante il rebase dovrai risolvere uno o anche due conflitti, mentre l'unione salterà completamente la modifica + la coppia di ripristino. – Roman

risposta

0

Si risolvono i conflitti nel commit in cui sarebbero stati introdotti, quindi in effetti non ne hai.

Se si modifica una riga nel mio ramo di funzionalità che è stata modificata nel ramo principale e si esegue un'unione diretta, essa entrerà in conflitto.

Se rebase, si fermerà al commit in cui ho apportato questa modifica e in quel punto mi occuperò del conflitto.

+0

Sembra che tu stia ancora risolvendo il conflitto, proprio in un momento diverso? La mia comprensione è che in realtà è meglio di così, e che ci sono alcuni conflitti che non si verificano nemmeno se si rebase invece di unire. Vorrebbe vedere affermazione di quello però. – Magnus

Problemi correlati