Ricerca nel sito web

Git Fetch: una lezione magistrale


Visualizza le modifiche apportate al repository remoto senza effettivamente inserire i file nel repository locale.

Punti chiave

Il comando git fetch è come un comando git pull che aggiorna il tuo repository locale con informazioni e commit dal repository remoto, senza sovrascrivere i tuoi file di lavoro.

Il comando Git fetch ti consente di guardare prima di saltare. Puoi scoprire quali modifiche sono state apportate a un repository remoto, ma senza sovrascrivere i file locali con i file remoti.

Cos'è git fetch e cosa fa?

Il comando fetch in Git scarica commit, file e altre informazioni da un repository remoto al tuo repository locale, in modo sicuro. Utilizza fetch quando vuoi vedere quali modifiche hanno apportato altri sviluppatori, senza essere costretto ad accettare le modifiche. I tuoi file locali rimangono intatti. Perché è importante?

Devi mantenere la lucidità quando lavori come parte di un team di sviluppo. Il repository remoto o centrale conterrà modifiche e nuovi rami che altri sviluppatori hanno creato e inviato al repository remoto.

È del tutto possibile che qualcuno abbia aggiornato la copia remota dei file che hai modificato localmente sul tuo computer. Se esegui casualmente un git pull per aggiornare il tuo repository locale, probabilmente ti ritroverai a gestire fusioni per modifiche che potresti non desiderare.

Una volta scaricate le informazioni, puoi esaminarle e vedere quali sono le modifiche. Ciò ti consente di fare una scelta informata su ciò che desideri unire in questo momento, se non altro, e su ciò che desideri rimandare a più tardi.

Git, recupero e pull

Il comando git fetch si comporta come il comando git pull ma senza il passaggio che sovrascrive i file locali. Il tuo repository locale viene aggiornato e sincronizzato, ma le modifiche non vengono scritte nello stato operativo del tuo repository locale, quindi i tuoi file rimangono intatti.

Oppure, per dirla in un altro modo, il comando git pull è come un git fetch seguito immediatamente da un git merge .

Sincronizza i tuoi repository locali e remoti con git fetch

Per recuperare tutti i metadati aggiornati e i commit da un repository remoto al repository locale, utilizza il comando git fetch con il nome o l'URL del repository remoto. Per impostazione predefinita, il primo repository remoto si chiama "origine".

git fetch origin

Puoi omettere la parola "origine" se lavori con un singolo repository remoto.

git fetch

Ciò recupera eventuali aggiornamenti dal repository "origine", ma non unisce le modifiche nei file di lavoro. Possiamo vedere che c'è un nuovo ramo, chiamato "new-branch", che è stato recuperato per noi.

Una volta utilizzato il comando fetch, puoi vedere l'elenco completo dei rami sul telecomando, utilizzando l'opzione -r (remoto) con il comando branch.

git branch -r

Questo elenca tutti i rami conosciuti dal remoto e che dopo fetch si trovano anche nel tuo repository locale.

Visualizza tutti i tag recuperati

Allo stesso modo, puoi utilizzare l'opzione tag (nota, è "tag" senza "s") per vedere l'elenco dei tag.

git tag

Fare prima un giro di prova

Sebbene un git fetch non unisca le modifiche ai tuoi file di lavoro, aggiorna comunque il tuo repository locale. Se vuoi vedere quali modifiche eseguirà il comando fetch, senza apportarle effettivamente, usa l'opzione --dry-run.

git fetch --dry-run

Come recuperare un singolo ramo

Recuperare informazioni su un singolo ramo è facile. Aggiungi il nome del ramo alla riga di comando per dire a fetch che devi conoscere solo quel ramo.

Qui stiamo dicendo a fetch di recuperare il ramo "mary-feature" dal repository remoto "origin".

git fetch origin mary-feature

Ora che i dettagli e i contenuti del ramo remoto sono nel tuo repository locale, puoi utilizzare il comando git checkout per creare un nuovo ramo ed eseguire il checkout del ramo remoto. Questo non sovrascriverà alcun file esistente se è la prima volta che usi questo ramo.

git checkout -b mary-feature origin/mary-feature

Recupera tutti i rami

Se utilizzi più telecomandi, puoi risparmiare tempo riportando tutte le modifiche da tutti i rami al tuo repository locale utilizzando l'opzione --all.

git fetch --all

Confronto tra filiali locali e remote

Per vedere come i file in un ramo remoto differiscono dalle tue copie locali, usa git fetch , quindi usa il comando git log.

Tieni presente che i rami locale e remoto sono separati da due punti "..". L'opzione --oneline mostra l'identificatore di commit e il messaggio di commit.

git fetch
git log --oneline mary-feature..origin/mary-feature

La visualizzazione su una riga è utile se un ramo contiene molte modifiche. Per vedere qualche informazione in più, ometti l'opzione --oneline.

git log mary-feature..origin/mary-feature

Questo ci mostra l'ora e la data di ogni commit, insieme al messaggio di commit e ai dettagli di contatto dell'autore della modifica.

Sincronizzazione di una filiale locale con una filiale remota

Se hai deciso di procedere e unire le modifiche dal ramo remoto ai file di lavoro locali, puoi utilizzare questi comandi.

Controlleremo la filiale per assicurarci che stiamo lavorando: è la nostra filiale attuale e funzionante..

git checkout mary-feature

Il ramo viene controllato per noi e ci viene detto che si trova dietro la versione remota. Possiamo usare git pull per aggiornarlo, quindi git status per verificare il nostro stato.

git pull
git status

Se abbiamo apportato alcune modifiche ai nostri file locali, Git ci informa quando effettuiamo il checkout del ramo che dovremo eseguire un git pull per avviare una fusione.

git checkout mary-feature

Un semplice git pull avvia il processo di recupero dei file e di fusione, oppure possiamo tuffarci direttamente e utilizzare git merge stesso. Inizieremo assicurandoci di lavorare con il ramo corretto

git checkout mary-feature

Diremo a git di unire il nostro ramo corrente con il ramo nel repository remoto, ci sono sei diversi commit che devono essere risolti.

Dobbiamo dire a Git quale ramo remoto vogliamo unire.

git merge origin/mary-feature

Si apre un editor per consentirci di fornire un messaggio di commit. Possiamo accettare il messaggio suggerito o aggiungerne uno nostro. L'editor è il tuo editor predefinito a meno che Git non sia stato configurato per utilizzare un editor diverso.

Salva le modifiche quando sei pronto per procedere. L'unione prosegue automaticamente alla chiusura dell'editor.

La nostra fusione ha avuto successo perché non ci sono stati conflitti.

I conflitti sorgono quando le stesse righe di codice vengono modificate da due o più sviluppatori. In tal caso, Git contrassegna i conflitti nel file interessato. Dovrai esaminarli uno dopo l'altro e scegliere quale modifica mantenere.

Il cucciolo semiaddestrato

Proprio come un cucciolo in addestramento, fetch recupererà ciò che chiedi, ma non lo lascerà cadere. Se vuoi davvero ciò che il cucciolo ti ha mostrato, dovrai tirare.

Correlati: Git rebase: tutto quello che devi sapere

Articoli correlati: