Articolo originale: Git Pull Explained
git pull
è un comando Git usato per aggiornare la versione locale di un repository dal remoto.
È uno dei quattro comandi che causa una interazione via internet con Git. Come default, git pull
fa due cose.
- Aggiorna l'attuale branch di lavoro locale (il branch su cui ti trovi)
- Aggiorna i branch di tracciamento remoto per tutti gli altri branch.
git pull
è equivalente all'uso di git fetch
seguito da git merge
: prende le informazioni dei nuovi commit, e li applica al branch locale.
La sintassi di questo comando è la seguente:
# General format
git pull OPTIONS REPOSITORY REFSPEC
# Pull from specific branch
git pull REMOTE-NAME BRANCH-NAME
in cui:
- OPTIONS sono le opzioni del comando, quali
--quiet
o--verbose
. Puoi leggere di più sulle diverse opzioni nella documentazione di Git - REPOSITORY è l'URL del tuo repo. Esempio: https://github.com/freeCodeCamp/freeCodeCamp.git
- REFSPEC specifica quali riferimenti prendere e quali riferimenti locali aggiornare
- REMOTE-NAME è il nome del tuo repository remoto. Per esempio: origin.
- BRANCH-NAME è il nome del tuo branch. Per esempio develop.
Nota
Se hai apportato dei cambiamenti e non li hai salvati in un commit, la parte merge del tuo comando git pull
fallirà e il tuo branch locale non cambierà.
Quindi, dovresti sempre salvare i tuoi cambiamenti in un branch prima di fare il pull dei nuovi commit da un repository remoto.
Tavola dei contenuti
Usare git pull
Usa git pull
per aggiornare un repository locale tramite il repository remoto corrispondente. Esempio: mentre lavori localmente su main
, esegui git pull
per aggiornare la copia locale di main
e aggiornare gli altri branch di tracciamento remoto. (Più informazioni sui branch di tracciamento remoto nella prossima sezione.)
Ci sono alcune cose da tenere in mente perché questo esempio possa essere vero:
Il repository locale deve avere un repository remoto collegato
- Verificalo eseguendo
git remote -v
- Se ci sono repository remoti multipli,
git pull
potrebbe non fornire informazioni sufficienti. Potresti aver bisogno di specificaregit pull origin
ogit pull upstream
.
Il branch su cui sei deve avere un branch di tracciamento remoto corrispondente
- Verificalo eseguendo
git status
. Se non c'è un branch di tracciamento remoto, Git non sa da dove fare il pull.
Controllo di versione distribuito
Git è un sistema di controllo di versione distribuito. Con questi sistemi, gli sviluppatori possono lavorare sullo stesso file allo stesso tempo in ambienti separati. Dopo aver fatto il push del codice al repository remoto, altri sviluppatori possono fare il pull del codice cambiato.
Interazioni sul Network in Git
Ci sono solo quattro comandi che causano interazioni tramite network su Git. Un repository locale non ha alcuna consapevolezza di cambiamenti fatti sul repository remoto, fino a che non c'è una richiesta di informazioni, e un repository remoto non ha alcuna consapevolezza dei cambiamenti locali fino a che i commit non vengono mandati al remoto con push.
I quattro comandi network sono:
git clone
git fetch
git pull
git push
I branch in un sistema di controllo di versione distribuito
Quando lavori con Git, può sembrare che ci siano molte copie dello stesso codice in giro. Ci sono differenti versioni dello stesso file su ogni branch e diverse copie degli stessi branch sul computer di ogni sviluppatore e sul remoto. Per tenere traccia di tutto questo, Git usa branch di tracciamento remoto.
Se esegui git branch --all
all'interno di un repository Git, i branch di tracciamento remoto appaiono in rosso. Queste sono copie di sola lettura del codice come appare in remoto. (Quando c'è stata l'ultima interazione network che ha portato le informazioni localmente? Ricorda quando questa informazione è stata aggiornata l'ultima volta. L'informazione nei branch di tracciamento remoto riflette le informazioni da quella interazione.)
Con i branch di tracciamento remoto puoi lavorare in Git su branch diversi senza interazioni network. Ogni volta che esegui i comandi git pull
o git fetch
, aggiorni i branch di tracciamento remoto.
git fetch + git merge
git pull
è un comando combinato, equivalente a git fetch
+ git merge
.
git fetch
Da solo, git fetch
aggiorna tutti i branch di tracciamento remoto nel repository locale. Nessun cambiamento si riflette su nessuno dei branch di lavoro locali.
git merge
Senza nessun argomento, git merge
unisce il branch di tracciamento remoto al branch di lavoro locale.
git pull
git fetch
aggiorna i branch di tracciamento remoto, git merge
aggiorna il branch locale con il corrispondente branch di tracciamento remoto. Usando git pull
, ottieni entrambe le parti di questi aggiornamenti. Ma questo significa che se sei su un branch secondario e esegui git pull
, quando torni sul branch principale, qualsiasi nuovo aggiornamento non sarà incluso. Ogni volta che ti sposti su un altro branch che potrebbe avere nuovi cambiamenti, è sempre una buona idea eseguire git pull
.
git pull in un IDE
Il linguaggio comune in altri IDE potrebbe non includere la parola pull
. Se cerchi le parole git pull
ma non le vedi, prova a cercare la parola sync
.
fare il fetch di una PR remota ad un repo locale
Per revisionare le PR (Pull Request) potresti volerle portare in locale. Per farlo, puoi usare il comando git fetch
come segue:
git fetch origin pull/ID/head:BRANCHNAME
ID è l'id della pull request e BRANCHNAME è il nome del branch che vuoi creare. Una volta che hai creato il branch puoi usare git checkout
per muoverti su quel branch.