Git Fetch: una master class

Pubblicato: 2023-02-26
Laptop Linux che mostra una finestra terminale con un motivo a globo sullo sfondo e una filigrana binaria
fatmawati achmad zaenuri/Shutterstock.com
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 tuoi file locali con i file remoti.

Sommario

Cos'è git fetch e cosa fa?
Git recupero contro pull
Sincronizza i tuoi repository locali e remoti con git fetch
Vedi tutti i tag recuperati
Fare prima una corsa a secco
Come recuperare un singolo ramo
Recupera tutti i rami
Confronto tra filiali locali e remote
Sincronizzazione di un ramo locale con un ramo remoto
Il cucciolo mezzo addestrato

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. Usa fetch quando vuoi vedere quali modifiche hanno apportato altri sviluppatori, senza essere costretti ad accettare le modifiche. I tuoi file locali rimangono intatti. Perché è importante?

Devi mantenere la tua intelligenza 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 le unioni per le modifiche che potresti non volere nemmeno.

Dopo aver scaricato le informazioni, puoi esaminarle e vedere quali sono le modifiche. Ciò ti consente di fare una scelta informata su cosa vuoi unire in questo momento, se non altro, e cosa vuoi rimandare a più tardi.

Git recupero contro 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 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 tuo repository locale, utilizza il comando git fetch con il nome o l'URL del repository remoto. Per impostazione predefinita, il primo repository remoto è chiamato "origine".

 git recupera l'origine

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

 git recupera 

Utilizzando il comando git fetch sul repository remoto predefinito

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

Dopo aver utilizzato il comando fetch , puoi visualizzare l'elenco completo dei rami sul telecomando, utilizzando l'opzione -r (remote) con il comando branch.

 ramo git -r 

Guardando i rami che esistono sul telecomando predefinito

Questo elenca tutti i rami che il remoto conosce, che dopo il fetch , sono anche nel tuo repository locale.

Vedi tutti i tag recuperati

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

 tag git 

Utilizzo del comando git tag per elencare i tag nel repository locale

CORRELATO: Come cambiare, aggiungere e rimuovere i telecomandi Git

Fare prima una corsa a secco

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

 git fetch --esecuzione a secco 

Usando l'opzione --dry-run in modo da vedere le modifiche che il comando fetch recupererebbe

Come recuperare un singolo ramo

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

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

 git fetch origin mary-feature 

Utilizzo di git fetch per recuperare un singolo ramo remoto

Ora che i dettagli e il contenuto del ramo remoto sono nel tuo repository locale, puoi usare 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 

Check-out sicuro di un ramo remoto recuperato in un nuovo ramo locale

Recupera tutti i rami

Se utilizzi più dispositivi remoti, puoi risparmiare tempo estraendo tutte le modifiche da tutti i rami nel repository locale utilizzando l'opzione --all .

 git fetch --tutto

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 .

Si noti 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 recupera
 git log --oneline mary-feature..origin/mary-feature 

Utilizzo di git per recuperare le modifiche remote e git log per mostrare le modifiche

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 

Omettendo l'opzione --oneline in modo che git mostri più dettagli per ogni commit

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 un ramo locale con un ramo remoto

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

Verificheremo il ramo per assicurarci che stiamo lavorando, è il nostro attuale ramo funzionante.

 git checkout mary-feature 

Controllo di un ramo

Il ramo è verificato per noi e ci viene detto che è dietro la versione remota. Possiamo usare git pull per aggiornarlo, quindi git status per controllare il nostro stato.

 git tirare
 stato git 

Estrazione delle modifiche dal repository rmeote a quello locale

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

 git checkout mary-feature 

Git ci informa che i brnahce locali e remoti si sono discostati e devono essere uniti

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

 git checkout mary-feature 

Git ci informa che i brnahce locali e remoti si sono discostati e devono essere uniti

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

Un messaggio di unione riuscito

Dobbiamo dire a Git quale ramo remoto vogliamo unire.

 git merge origin/mary-feature 

utilizzando git merge per unire le modifiche remote in un ramo locale

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.

Modifica del messaggio di commit

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.

Un messaggio di unione riuscito

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 a turno e scegliere quale modifica mantenere.

Il cucciolo mezzo addestrato

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 pull .

CORRELATO: Git rebase: tutto ciò che devi sapere