Git Fetch: O clasă de master
Publicat: 2023-02-26 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ță.
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
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
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
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
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
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
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
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
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
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
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
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
Îi vom spune lui git
să îmbine ramura noastră actuală cu ramura din depozitul de la distanță, există șase comite diferite care trebuie rezolvate.
Trebuie să îi spunem lui Git ce ramură la distanță dorim să îmbinăm.
git merge origine/mary-feature
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.
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.
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