Ricerca…


introduzione

A differenza di spingere con Git dove le modifiche locali vengono inviate al server del repository centrale, tirare con Git prende il codice corrente sul server e lo "tira" dal server del repository al computer locale. Questo argomento spiega il processo di estrazione del codice da un repository usando Git e le situazioni che si potrebbero incontrare mentre si estrae codice diverso nella copia locale.

Sintassi

  • git pull [opzioni [<repository> [<refspec> ...]]

Parametri

parametri Dettagli
--quiet Nessun output di testo
-q abbreviazione di --quiet
--verbose output di testo dettagliato. Passati a recuperare e unire / rebase comandi rispettivamente.
-v abbreviazione di --verbose
--[no-]recurse-submodules[=yes | on-demand | no] Recupera nuovi commit per i sottomoduli? (Non che questo non sia un pull / checkout)

Osservazioni

git pull esegue git fetch con i parametri specificati e chiama git merge per unire le branch branch recuperate nel ramo corrente.

Aggiornamento con modifiche locali

Quando sono presenti modifiche locali, il comando git pull interrompe la segnalazione:

errore: le modifiche locali ai seguenti file verrebbero sovrascritte dall'unione

Per aggiornare (come svn update fatto con subversion), puoi eseguire:

git stash
git pull --rebase 
git stash pop

Un modo conveniente potrebbe essere quello di definire un alias usando:

2.9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2.9
git config --global alias.up 'pull --rebase --autostash'

Quindi puoi semplicemente usare:

git up

Pull codice da remoto

git pull

Tirare, sovrascrivere locale

git fetch
git reset --hard origin/master

Attenzione: mentre i commit vengono scartati usando reset --hard può essere ripristinato usando reflog e reset , le modifiche non vincolate vengono cancellate per sempre.

Cambia origin e master al remoto e al ramo a cui vuoi forzatamente accedere, rispettivamente, se sono denominati in modo diverso.

Mantenere una storia lineare quando si tira

Ribasare quando si tira

Se stai caricando nuovi commit dal repository remoto e hai modifiche locali sul ramo corrente, git unirà automaticamente la versione remota e la tua versione. Se desideri ridurre il numero di fusioni sul ramo, puoi dire a git di ribilanciare i tuoi commit sulla versione remota del ramo.

git pull --rebase

Rendendolo il comportamento predefinito

Per rendere questo il comportamento predefinito per i rami appena creati, digitare il seguente comando:

git config branch.autosetuprebase always

Per cambiare il comportamento di un ramo esistente, usa questo:

git config branch.BRANCH_NAME.rebase true

E

git pull --no-rebase

Per eseguire un tiro di unione normale.


Controlla se è veloce da inoltrare

Per consentire solo l'inoltro veloce del ramo locale, è possibile utilizzare:

git pull --ff-only

Questo mostrerà un errore quando il ramo locale non è veloce da inoltrare e deve essere rebasato o fuso con upstream.

Pull, "autorizzazione negata"

Alcuni problemi possono verificarsi se la cartella .git ha un'autorizzazione errata. Risolvere questo problema impostando il proprietario della cartella .git completa. A volte capita che un altro utente tiri e modifichi i diritti della cartella o dei file .git .

Per fissare il problema:

chown -R youruser:yourgroup .git/

Estrazione delle modifiche in un repository locale

Semplice tiro

Quando stai lavorando su un repository remoto (ad esempio, GitHub) con qualcun altro, a un certo punto vorresti condividere le tue modifiche con loro. Dopo aver trasferito le modifiche su un repository remoto, è possibile recuperare tali modifiche estraendo da questo repository.

git pull

Lo farà, nella maggior parte dei casi.


Pull da un remoto o ramo diverso

Puoi estrarre le modifiche da un altro telecomando o ramo specificandone i nomi

git pull origin feature-A

Estrae la feature-A del ramo feature-A origin modulo nel tuo ramo locale. Si noti che è possibile fornire direttamente un URL anziché un nome remoto e un nome di oggetto come un SHA di commit anziché il nome di un ramo.


Tiro manuale

Per imitare il comportamento di un git pull, puoi usare git fetch quindi git merge

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

Questo può darti più controllo e ti permette di ispezionare il ramo remoto prima di unirlo. Infatti, dopo aver recuperato, puoi vedere i rami remoti con git branch -a e controllarli con

git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge

Questo può essere molto utile durante l'elaborazione delle richieste di pull.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow