Git Fetch: O clasă de master

Publicat: 2023-02-26
Laptop Linux care arată o fereastră de terminal cu un model glob în fundal și un filigran binar
fatmawati achmad zaenuri/Shutterstock.com
Comanda git fetch este ca o comandă git pull care vă actualizează depozitul local cu informații și comite din depozitul de la distanță, fără a vă suprascrie fișierele de lucru.

Comanda Git fetch vă permite să priviți înainte de a sări. Puteți descoperi ce modificări au fost aduse unui depozit de la distanță, dar fără a suprascrie fișierele locale cu fișierele de la distanță.

Cuprins

Ce este git fetch și ce face?
Git fetch vs. pull
Sincronizați-vă arhivele locale și la distanță cu git fetch
Vedeți toate etichetele preluate
Făcând mai întâi o alergare uscată
Cum să obțineți o singură ramură
Preluați toate ramurile
Compararea sucursalelor locale și la distanță
Sincronizarea unei filiale locale cu o filială la distanță
Cățelușul pe jumătate dresat

Ce este git fetch și ce face?

Comanda fetch din Git descarcă comite-uri, fișiere și alte informații dintr-un depozit de la distanță în depozitul dvs. local, în siguranță. Utilizați fetch atunci când doriți să vedeți ce modificări au făcut alți dezvoltatori, fără a fi forțat să acceptați modificările. Fișierele dvs. locale rămân neatinse. De ce este asta important?

Trebuie să vă păstrați inteligența când lucrați ca parte a unei echipe de dezvoltare. Depozitul de la distanță sau central va conține modificări și ramuri noi pe care alți dezvoltatori le-au creat și le-au împins în depozitul de la distanță.

Este absolut posibil ca cineva să fi actualizat copia de la distanță a fișierelor pe care le-ați modificat local pe computer. Dacă executați ocazional un git pull pentru a vă actualiza depozitul local, probabil că vă veți găsi singur gestionând îmbinări pentru modificări pe care s-ar putea să nu le doriți.

După ce ați descărcat informațiile, puteți să le examinați și să vedeți care sunt modificările. Acest lucru vă permite să faceți o alegere informată cu privire la ceea ce doriți să fuzionați chiar acum, dacă este ceva, și ce doriți să amânați pentru mai târziu.

Git fetch vs. pull

Comanda git fetch se comportă ca comanda git pull , dar fără pasul care suprascrie fișierele locale. Depozitul dvs. local este actualizat și sincronizat, dar modificările nu sunt scrise în starea de lucru a depozitului dvs. local, astfel încât fișierele dvs. rămân neatinse.

Sau, altfel spus, comanda git pull este ca un git fetch urmat imediat de o git merge .

Sincronizați-vă arhivele locale și la distanță cu git fetch

Pentru a prelua toate metadatele actualizate și comiterea dintr-un depozit la distanță în depozitul dvs. local, utilizați comanda git fetch cu numele sau adresa URL a depozitului la distanță. În mod implicit, primul depozit de la distanță se numește „origine”.

 git fetch origine

Puteți omite cuvântul „origine” dacă lucrați cu un singur depozit de la distanță.

 git fetch 

Folosind comanda git fetch din depozitul implicit de la distanță

Aceasta preia orice actualizări din depozitul „de origine”, dar nu îmbină modificările în fișierele de lucru. Putem vedea că există o nouă ramură, numită „nouă-ramură”, care ne-a fost preluată.

Odată ce ați folosit comanda fetch , puteți vedea lista completă a ramurilor de pe telecomandă, utilizând opțiunea -r (la distanță) cu comanda de ramuri.

 git branch -r 

Privind ramurile care există pe telecomanda implicită

Aceasta listează toate ramurile despre care știe telecomanda, care, după fetch , se află și în depozitul dvs. local.

Vedeți toate etichetele preluate

În mod similar, puteți utiliza opțiunea tag (rețineți că este „etichetă” fără „s”) pentru a vedea lista de etichete.

 eticheta git 

Folosind comanda git tag pentru a lista etichetele în depozitul local

LEGATE: Cum să comutați, să adăugați și să eliminați telecomenzile Git

Făcând mai întâi o alergare uscată

Deși un git fetch nu îmbină modificările în fișierele dvs. de lucru, totuși vă actualizează depozitul local. Dacă doriți să vedeți ce schimbare va efectua comanda fetch , fără a le face efectiv, utilizați opțiunea --dry-run .

 git fetch --dry-run 

Folosind opțiunea --dry-run, pentru a vedea modificările pe care le-ar prelua comanda fetch

Cum să obțineți o singură ramură

Preluarea informațiilor despre o singură ramură este ușor. Adăugați numele ramurii la linia de comandă pentru a spune fetch că trebuie să știți doar despre acea ramură.

Aici, îi spunem fetch să recupereze ramura „mary-feature” din depozitul de la distanță „origin”.

 git fetch origine mary-feature 

Folosind git fetch pentru a prelua o singură ramură la distanță

Acum că detaliile și conținutul ramurului la distanță se află în depozitul dvs. local, puteți utiliza comanda git checkout pentru a crea o nouă ramură și a verifica ramura la distanță. Acest lucru nu va suprascrie niciun fișier existent dacă este prima dată când utilizați această ramură.

 git checkout -b mary-feature origine/mary-feature 

Verificarea în siguranță a unei sucursale la distanță preluată într-o nouă sucursală locală

Preluați toate ramurile

Dacă utilizați mai multe telecomenzi, puteți economisi timp trăgând toate modificările din toate ramurile înapoi în depozitul dvs. local, utilizând opțiunea --all .

 git fetch --all

Compararea sucursalelor locale și la distanță

Pentru a vedea cum diferă fișierele dintr-o ramură la distanță de copiile locale, utilizați git fetch , apoi utilizați comanda git log .

Rețineți că ramurile locale și la distanță au două puncte „ .. ” care le separă. Opțiunea --oneline arată identificatorul de comitere și mesajul de comitere.

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

Folosind git pentru a prelua modificările de la distanță și git log pentru a afișa modificările

Afișarea pe o linie este utilă dacă o ramură conține multe modificări. Pentru a vedea puțin mai multe informații, omiteți opțiunea --oneline .

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

Omitând opțiunea --oneline, astfel încât thatgit să arate mai multe detalii pentru fiecare commit

Aceasta ne arată ora și data fiecărui comit, împreună cu mesajul de comitere și detaliile de contact ale autorului modificării.

Sincronizarea unei filiale locale cu o filială la distanță

Dacă ați decis că doriți să mergeți mai departe și să îmbinați modificările de la ramura la distanță în fișierele dvs. de lucru locale, puteți utiliza aceste comenzi.

Vom verifica filiala pentru a ne asigura că lucrăm, este filiala noastră actuală, care lucrează.

 git checkout mary-feature 

Verificarea unei sucursale

Sucursala este verificată pentru noi și ni se spune că se află în spatele versiunii la distanță. Putem folosi git pull pentru a-l actualiza, apoi git status pentru a ne verifica starea.

 git pull
 starea git 

Tragerea modificărilor din depozitul rmeote în cel local

Dacă am făcut unele modificări la fișierele noastre locale, Git ne informează atunci când verificăm ramura că va trebui să efectuăm un git pull pentru a începe o îmbinare.

 git checkout mary-feature 

Git ne informează că ramurile locale și cele de la distanță au divergent și trebuie fuzionate

Un simplu git pull pornește procesul de recuperare a fișierelor și de îmbinare, sau ne putem scufunda direct și folosi git merge în sine. Vom începe prin a ne asigura că lucrăm cu ramura corectă

 git checkout mary-feature 

Git ne informează că ramurile locale și cele de la distanță au divergent și trebuie fuzionate

Îi vom spune lui git să îmbine ramura noastră actuală cu ramura din depozitul de la distanță, există șase comite diferite care trebuie rezolvate.

Un mesaj de îmbinare reușit

Trebuie să îi spunem lui Git ce ramură la distanță dorim să îmbinăm.

 git merge origine/mary-feature 

folosind git merge pentru a îmbina modificările de la distanță într-o ramură locală

Se deschide un editor care ne permite să furnizăm un mesaj de confirmare. Putem accepta mesajul sugerat sau îl putem adăuga pe al nostru. Editorul este editorul tău implicit, cu excepția cazului în care Git a fost configurat să folosească un alt editor.

Editarea mesajului de confirmare

Salvați modificările când sunteți gata să continuați. Îmbinarea continuă automat când editorul este închis.

Fuziunea noastră a avut succes deoarece nu au existat conflicte.

Un mesaj de îmbinare reușit

Conflictele apar atunci când aceleași linii de cod sunt modificate de doi sau mai mulți dezvoltatori. Dacă acesta este cazul, Git marchează conflictele din fișierul afectat. Va trebui să le examinați pe rând și să alegeți ce modificare să păstrați.

Cățelușul pe jumătate dresat

La fel ca un cățel în dresaj, fetch va recupera ceea ce ai cerut, dar nu-l va scăpa. Dacă vrei cu adevărat ceea ce ți-a arătat cățelul, va trebui să pull .

RELATE: Git rebase: Tot ce trebuie să știți