Un git pull
Γ¨ banalmente un git fetch che viene successivamente seguito da un git merge.
Quando uso un git fetch
, git raccoglie tutti i commit da un branch che non esiste nel tuo branch di riferimento e li salva nella repository locale (che Γ¨ la cartella .git/). Questo perΓ² senza fare il merge di tale branch remoto con il mio branch attuale (non modifica nulla nellβworking tree, che Γ¨ tutto ciΓ² che non in .git/).
Questo comportamento Γ¨ particolarmente utile quando voglio mantenere la mia repository aggiornata, ma il lavoro che sto facendo potrebbe rompere qualcosa se io unissi il contenuto remoto con il contenuto locale. Per integrare i commit scaricati al mio branch, devo eseguire un git merge
.
Quando uso il git pull
invece, git prova automaticamente a fare il merge dei commit recuperati tramite il fetch nel mio branch locale (quindi prima aggiorna la local repository .git/ e successivamente anche il working tree), senza prima farmi vedere quello che sta effettivamente unendo. A meno che non abbia una frequente analisi dei branch, il pull puΓ² portare a numerosi conflitti.