Corso
Se lavori in team o anche da solo su un progetto in evoluzione, sai quanto sia essenziale mantenere aggiornato il tuo repository locale per collaborare senza intoppi. È qui che entra in gioco git pull, perché integra le modifiche remote nel tuo branch locale. In sostanza, git pull recupera e integra le modifiche da un repository remoto nel tuo branch locale. È un comando cruciale che ti assicura di lavorare sempre con il codice più aggiornato, soprattutto in progetti collaborativi e frenetici.
La cosa interessante di git pull è che combina due passaggi: prima esegue un git fetch per scaricare le modifiche più recenti, poi avvia automaticamente un git merge per integrare quegli aggiornamenti nel tuo branch. Se preferisci una cronologia più pulita senza commit di merge aggiuntivi, puoi usare git pull --rebase.
Se vuoi padroneggiare bene questi concetti, dai un'occhiata al nostro nuovissimo skill track GitHub Fundamentals. Lavorando sul corso imparerai la cronologia delle versioni e a lavorare con i branch e, alla fine, conoscerai anche strategie avanzate di merge e gestione dei repository.
Che cos'è Git Pull?
Vediamolo nel dettaglio. Quando esegui git pull, aggiorni il tuo branch locale con gli ultimi commit dal repository remoto. Ecco come funziona:
-
Recupero degli aggiornamenti: Git inizia eseguendo
git fetchper recuperare tutti i nuovi commit dal remoto. -
Merge delle modifiche: quindi esegue automaticamente un
git mergeper integrare i commit recuperati nel tuo branch corrente.

Ecco una rappresentazione visiva del processo di Git Pull. Il grafico mostra come i commit dal repository remoto (A → B → C) vengano recuperati e uniti nel branch locale (A → B → D). La linea tratteggiata rappresenta il passaggio di merge, in cui il commit C viene integrato nel repository locale. Questo illustra come git pull mantenga il tuo branch locale aggiornato con le modifiche più recenti del remoto.
Git Pull e comandi correlati
Esploriamo alcune opzioni essenziali disponibili con git pull e vediamo come possano rendere il tuo flusso di lavoro più fluido. Che tu voglia ripulire la cronologia dei commit o avere maggiore visibilità su ciò che accade durante un pull, questi comandi ti coprono le spalle. Ecco un riferimento rapido:
| Command | Description |
|---|---|
git pull |
Recupera e unisce le modifiche remote nel branch corrente. |
git pull origin <branch> |
Recupera le modifiche da uno specifico branch remoto. |
git pull --rebase |
Usa il rebase invece del merge per ottenere una cronologia lineare e più pulita. |
git pull --no-commit |
Recupera e unisce le modifiche remote ma non crea un commit automatico, permettendoti di ispezionare e modificare il risultato del merge prima di confermarlo. |
git pull --verbose |
Fornisce output dettagliato durante il pull, aiutandoti a vedere esattamente quali modifiche vengono recuperate. |
Queste opzioni offrono flessibilità, così puoi adattare il processo di aggiornamento alle esigenze del tuo progetto. Per esempio, se preferisci una cronologia più ordinata, git pull --rebase potrebbe diventare la tua scelta preferita. Oppure, se vuoi ricontrollare le modifiche prima di unire, git pull --no-commit ti dà quel livello extra di controllo.
Evitare i problemi comuni con Git Pull
Ammettiamolo: git pull è una salvezza, ma non è privo di stranezze. Ecco come superare gli ostacoli più comuni e mantenere fluido il tuo flusso di lavoro:
Conflitti di merge
I conflitti di merge si verificano quando le tue modifiche locali si sovrappongono a quelle del repository remoto. Per esempio, se tu e un collega modificate la stessa riga di codice, Git non saprà quale versione mantenere. In questi casi, Git mette in pausa il merge e ti chiede di risolvere manualmente il conflitto.
Ecco come risolverlo:
-
Apri i file in conflitto e cerca i marcatori di conflitto (
<<<<<<<,=======,>>>>>>>). -
Modifica il file per mantenere le modifiche desiderate.
-
Salva il file, mettilo in stage (
git add <file>) e completa il merge (git commit).
Eseguire il pull con modifiche non confermate
Se hai modifiche non confermate nella tua working directory, git pull potrebbe fallire perché ha bisogno di una base pulita per unire le modifiche remote.
Ecco la soluzione:
1. Metti da parte le modifiche (stash):
Dato che git pull richiede una working directory pulita, devi salvare temporaneamente le modifiche non confermate usando il comando stash. In questo modo le mantieni al sicuro mentre aggiorni il branch.
git stash
2. Recupera le modifiche più recenti:
Ora che la working directory è pulita, puoi recuperare e unire in sicurezza le ultime modifiche dal repository remoto.
git pull
3. Riapplica le modifiche messe da parte:
Una volta completato l'aggiornamento, puoi ripristinare le modifiche salvate nella tua working directory usando git stash pop. Questo riporterà tutto ciò che avevi prima dello stash.
git stash pop
Seguendo questi passaggi, le tue modifiche locali restano al sicuro mentre aggiorni il branch.
Eseguire il pull dal branch sbagliato
Se esegui git pull senza specificare un branch, Git preleva dall'upstream che il tuo branch locale sta tracciando. Se l'upstream non è impostato correttamente, potresti recuperare modifiche da un branch inatteso, causando confusione o errori.
Ecco come evitarlo:
1. Controlla il branch upstream:
git branch -vv
2. Se necessario, imposta l'upstream corretto:
git branch --set-upstream-to=origin/<branch>
Verifica sempre da quale branch stai facendo pull, soprattutto quando lavori con più branch.
Best practice per usare Git Pull
Partendo da quanto visto per evitare i problemi più comuni, ecco alcune best practice per sfruttare al meglio git pull nella routine quotidiana:
-
Fai pull frequentemente: Aggiorna regolarmente il tuo branch per evitare che si accumulino grandi conflitti. Cambiamenti piccoli e incrementali sono molto più gestibili di merge massicci più avanti.
-
Ispeziona prima di unire: Esegui
git fetchper vedere quali modifiche ti aspettano. Così puoi rivedere i commit in arrivo senza unirli subito, dandoti il tempo di prepararti ad eventuali aggiustamenti. -
Mantieni una cronologia lineare: Se preferisci una cronologia pulita, usa
git pull --rebase. Questo comando rebase-a le tue modifiche locali sopra gli ultimi commit remoti, mantenendo ordinata la storia del progetto. -
Rivedi i merge: Per maggiore cautela, usa
git pull—- no-commitper ispezionare i risultati del merge prima di finalizarli con un commit. Così intercetti presto eventuali discrepanze. -
Verifica il tracking dei branch: Esegui sempre
git remote show originper assicurarti che il tuo branch locale tracci quello remoto corretto. Questo semplice controllo aiuta a evitare aggiornamenti portati nel branch sbagliato.
Perché alcuni sviluppatori evitano git pull
Sebbene git pull sia comodo, alcuni sviluppatori preferiscono dividere il processo in due passaggi per avere più controllo:
1. Prima fetch
git fetch
Questo recupera le modifiche remote senza unirle.
2. Integra manualmente
Usa git merge per combinare le modifiche:
git merge origin/<branch>
Oppure usa git rebase per una cronologia più pulita:
git rebase origin/<branch>
Esempi pratici di Git Pull in azione
Vediamo alcuni esempi pratici di utilizzo di git pull così puoi capire esattamente come funzionano questi comandi in scenari reali.
Uso base di git pull
Il comando git pull è il modo più semplice per aggiornare il tuo branch locale con le modifiche più recenti dal branch principale del repository remoto. Esegue automaticamente un git fetch seguito da un git merge. Usa questo comando per sincronizzare il tuo repository locale con gli aggiornamenti più recenti dal remoto senza passaggi aggiuntivi. Eseguendo git pull recuperi gli aggiornamenti dal remoto (tipicamente chiamato origin) e li unisci nel tuo branch corrente, assicurandoti che il codice locale resti aggiornato.

Usare git pull --rebase
Se preferisci una cronologia pulita e lineare senza commit di merge non necessari, git pull --rebase è la strada giusta. Questo comando recupera le modifiche remote e poi riapplica i tuoi commit locali sopra di esse, mantenendo una cronologia strutturata. È particolarmente utile in progetti collaborativi dove un log dei commit ordinato è essenziale. Eseguendo git pull --rebase ti assicuri che i tuoi commit locali vengano rigiocati sopra le modifiche recuperate, evitando merge ridondanti e mantenendo la cronologia del repository più leggibile.

Usare git pull --no-commit
Se vuoi recuperare e unire le modifiche remote ma preferisci rivederle prima di confermare, git pull--no-commit è l'opzione perfetta. Questo comando ti permette di ispezionare manualmente i risultati del merge e risolvere eventuali conflitti prima di finalizzare il commit. Ti garantisce il pieno controllo sul processo di integrazione, ideale per aggiornamenti prudenti in cui vuoi verificare le modifiche prima di confermare.

Pull da uno specifico branch remoto
Quando lavori su più branch, potresti dover aggiornare il tuo branch locale con modifiche provenienti da uno specifico branch remoto invece del branch principale predefinito. Il comando git pull origin feature ti consente di recuperare e unire gli ultimi commit da un branch designato, garantendo che il tuo lavoro locale rimanga aggiornato con le modifiche remote più recenti. Questo è particolarmente utile quando collabori sullo sviluppo di funzionalità o sulla correzione di bug su branch differenti.
Git Pull vs. Git Fetch
Lavorando con Git, incontrerai spesso git pull e git fetch. Anche se possono sembrare simili, hanno scopi distinti. Vediamo le differenze, così puoi decidere quando usare l'uno o l'altro.
Capire la differenza
-
git fetchrecupera le modifiche da un repository remoto ma non le integra nel tuo branch di lavoro. Si limita ad aggiornare la tua copia locale dei branch remoti. -
git pullfa lo stesso digit fetchma unisce subito le modifiche recuperate nel tuo branch corrente.
Tabella di confronto
| Feature | git fetch | git pull |
|---|---|---|
| Cosa fa | Scarica le nuove modifiche dal remoto ma non le unisce | Scarica e unisce immediatamente le modifiche nel branch corrente |
| Modifica la working directory? | No—aggiorna i branch di tracking remoto | Sì—modifica il branch di lavoro |
| Ideale per | Controllare le modifiche remote prima di unirle | Aggiornare rapidamente il branch locale con le ultime modifiche |
| Sicuro da usare sempre? | Sì, perché non influisce sul lavoro locale | No, perché può generare conflitti di merge |
| Caso d'uso comune | Ispezionare le modifiche remote prima di decidere di unirle | Mantenere automaticamente aggiornati i branch locali |
| Sintassi del comando | git fetch origin |
git pull origin main |
Quando usare ciascuno?
Usa git fetch per rivedere le modifiche prima di aggiornare il tuo branch, unire o rebase in un secondo momento, o evitare di portare modifiche instabili mentre lavori su un feature branch. D'altra parte, usa git pull quando ti servono gli ultimi aggiornamenti su un branch condiviso, come central o develop, quando sei sicuro di poter unire le modifiche remote senza conflitti, o quando vuoi restare sincronizzato con il repository del team. Molti sviluppatori che preferiscono più controllo sulle integrazioni usano prima git fetch, seguito da git merge o rebase manuale. Se ti interessano workflow Git avanzati, esplorare approcci strutturati può migliorare la tua strategia di controllo versione.
Conclusione
A questo punto dovresti avere una solida comprensione di git pull—come funziona, quando usarlo e le migliori strategie per evitare gli intoppi più comuni. Abbiamo visto che git pull combina git fetch e git merge, rendendolo un modo rapido per aggiornare il tuo repository locale. Se preferisci una cronologia dei commit più pulita, git pull --rebase è un'ottima alternativa.
Abbiamo anche esplorato opzioni chiave come fare pull da branch specifici, evitare commit immediati e gestire efficacemente i conflitti di merge. Inoltre, abbiamo discusso perché alcuni sviluppatori scelgono git fetch seguito da git merge per avere più controllo sulle modifiche in arrivo.
Alla fine, mantenere fluido il tuo workflow Git significa capire come si spostano le modifiche tra repository locali e remoti. Che tu stia collaborando a un progetto di team o gestendo i tuoi repository, sapere quando fare pull, fetch, merge o rebase ti eviterà molti grattacapi. Con Git c'è tanto da imparare, ma su DataCamp siamo qui per aiutarti. Ti consiglio il nostro corso Foundations of Git e il corso Introduction to GitHub Concepts come due ottime opzioni.
Technical writer specializzato in AI, ML e data science: rende idee complesse chiare e accessibili.
git pull - Domande frequenti
Cosa fa git pull?
git pull aggiorna il tuo repository locale recuperando le modifiche da un repository remoto e unendole nel tuo branch corrente. Combina git fetch e git merge in un unico comando.
In cosa git pull è diverso da git fetch?
git fetch scarica le modifiche dal repository remoto ma non le unisce nel tuo branch locale, mentre git pull recupera e unisce automaticamente le modifiche.
Cosa devo fare se git pull genera un conflitto di merge?
Se git pull provoca un conflitto di merge, Git metterà in pausa il merge. Devi risolvere manualmente i file in conflitto, usare git add per mettere in stage le modifiche risolte ed eseguire git commit per completare il merge.
Come posso prelevare le modifiche senza fare un merge?
Usa git pull --rebase invece di git pull per applicare le modifiche in arrivo sopra i tuoi commit locali, evitando i merge commit e mantenendo la cronologia lineare.
Come faccio a fare pull da uno specifico branch?
Esegui git pull origin <branch-name> per recuperare e unire le modifiche da uno specifico branch del repository remoto nel tuo branch locale corrente.


