git fetch (Română)

git fetch (Română)

comanda git fetch descarcă comiteri, fișiere și refs dintr-un depozit de la distanță în repo-ul local. Preluarea este ceea ce faci atunci când doriți să vedeți ce toată lumea a fost de lucru pe. Este similar cu svn update prin faptul că vă permite să vedeți cum a progresat istoria centrală, dar nu vă obligă să îmbinați efectiv modificările în depozitul dvs. Git izolează conținutul preluat de conținutul local existent; nu are absolut niciun efect asupra activității dvs. de dezvoltare locală., Conținutul preluat trebuie verificat Explicit folosind comanda git checkout. Acest lucru face ca preluarea să fie o modalitate sigură de a examina comiterile înainte de a le integra cu depozitul local.

când descărcați conținut dintr-un repo la distanță, git pull și git fetch comenzile sunt disponibile pentru a îndeplini sarcina. Puteți lua în considerare git fetch versiunea „sigură” a celor două comenzi. Acesta va descărca conținutul de la distanță, dar nu va actualiza starea de lucru a repo-ului local, lăsând munca curentă intactă., git pull este cel mai agresiv alternative; se va descărca conținut la distanță pentru cea mai activă filială locală și executa imediat git merge pentru a crea o îmbinare a comis pentru noul conținut la distanță. Dacă aveți modificări în curs de desfășurare, acest lucru va provoca conflicte și va lansa fluxul de soluționare a conflictelor de îmbinare.

cum funcționează git fetch cu sucursale la distanță

pentru a înțelege mai bine cum funcționează git fetch să discutăm despre modul în care git organizează și stochează comiteri., În spatele scenei, în directorul ./.git/objects al depozitului, git stochează toate comiterile, locale și la distanță. Git păstrează la distanță și locale sucursale se angajează distinct separat prin utilizarea refs ramură. Refs pentru sucursalele locale sunt stocate în ./.git/refs/heads/. Executând comanda git branch va afișa o listă A refs-urilor locale. Următorul este un exemplu de ieșire git branch cu unele nume de sucursale demo.,

git branch
master
feature1
debug2

Examinarea conținutului /.git/refs/heads/ director ar dezvălui similare de ieșire.

ls ./.git/refs/heads/
master
feature1
debug2

ramurile la distanță sunt la fel ca ramurile locale, cu excepția faptului că mapează comiterile din depozitul altcuiva. Ramurile de la distanță sunt prefixate de telecomanda de care aparțin, astfel încât să nu le amestecați cu sucursalele locale. La fel ca sucursalele locale, Git are, de asemenea, refs pentru sucursale la distanță. Remote branch refs trăiesc în directorul ./.git/refs/remotes/., Următorul exemplu de fragment de cod arată ramuri s-ar putea vedea după preluarea de la distanță repo convenabil numit remote-repo:

git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature

Această ieșire afișează sucursalelor locale am avut de examinat anterior, dar acum le afișează prefixate cu origin/. În plus, acum vedem ramurile la distanță prefixate cu remote-repo. Puteți verifica o sucursală la distanță la fel ca una locală, dar acest lucru vă pune într-un detașat HEAD stat (la fel ca verificarea unui vechi comite). Vă puteți gândi la ele ca la ramuri numai pentru citire., Pentru a vizualiza de la distanță ramuri, trece pur și simplu -r steagul git branch comandă.

puteți inspecta ramurile la distanță cu comenzile obișnuite git checkout și git log. Dacă aprobați modificările pe care le conține o ramură la distanță, o puteți îmbina într-o ramură locală cu un git mergenormal. Deci, spre deosebire de SVN, sincronizarea depozitului local cu un depozit la distanță este de fapt un proces în doi pași: fetch, apoi merge. Comanda git pull este o comandă rapidă convenabilă pentru acest proces.,

git fetch comenzi și opțiuni

git fetch <remote>

Fetch toate ramurile din depozit. Aceasta Descarcă, de asemenea, toate comiterile și fișierele necesare din celălalt depozit.

git fetch <remote> <branch>

la fel ca comanda de mai sus, dar numai prelua ramura specificată.

git fetch --all

O putere care preia toate înregistrate telecomenzi și ramurile lor:

git fetch --dry-run

--dry-run opțiune va efectua un demo rula de comanda., Acesta va afișa Exemple de acțiuni pe care le va lua în timpul preluării, dar nu le va aplica.

git fetch a remote branch

următorul exemplu va demonstra cum să preluați o remote branch și cum să actualizați starea de lucru locală la conținutul remote. În acest exemplu, să presupunem că există o origine centrală repo din care depozitul local a fost clonat folosind comanda git clone. Să presupunem, de asemenea, un depozit suplimentar la distanță numit coworkers_repo care conține un feature_branch pe care îl vom configura și prelua., Cu aceste ipoteze stabilite să continuăm exemplul.

În primul rând, va trebui să configurăm repo-ul la distanță folosind comanda git remote.

git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git

aici am creat o referință la repo colegului folosind URL-ul repo. Vom trece acum acel nume de la distanță la git fetch pentru a descărca conținutul.

git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch

acum Vom avea la nivel local conținutul de colegii/feature_branch vom avea nevoie de a integra acest lucru în copia de lucru locală., Începem acest proces folosind comanda git checkout pentru a verifica sucursala de la distanță recent descărcată.

git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>

de ieșire din această casă funcționare indică faptul că suntem într-o detașat HEAD stat. Acest lucru este de așteptat și înseamnă că HEAD ref indică un ref care nu este în concordanță cu istoria noastră locală. Fiind faptul că HEAD este indicat la ref coworkers/feature_branch, putem crea o nouă sucursală locală din acel ref., La ‘desprinse HEAD‘ ieșire ne arată cum să faceți acest lucru folosind git checkout command:

git checkout -b local_feature_branch

Aici am creat o noua filiala locală numit local_feature_branch. Acest lucru pune actualizări HEAD pentru a indica cel mai recent conținut de la distanță și putem continua dezvoltarea pe ea din acest punct.

sincronizați originea cu Git fetch

următorul exemplu parcurge fluxul de lucru tipic pentru sincronizarea depozitului local cu sucursala principală a depozitului central.,

git fetch origin

Aceasta va afișa ramurile care au fost descărcate:

se angajează la aceste noi sucursale izolate sunt afișate ca pătrate în loc de cercuri în diagrama de mai jos. După cum puteți vedea, git fetch vă oferă acces la întreaga structură de ramură a unui alt depozit.,

Pentru a vedea ce se angajează au fost adăugate în amonte de master, puteți rula un git log utilizarea origine/stăpânul ca un filtru:

git log --oneline master..origin/master

Pentru a aproba modificările și a le îmbina în local ramura master utilizați următoarele comenzi:

git checkout master
git log origin/master

Atunci putem folosi git merge origin/master:

git merge origin/master

originea/master și master ramurile acum punctul de la același comite, și sunt sincronizate cu cele din amonte evoluții.,

git fetch summary

în revizuire, git fetch este o comandă principală utilizată pentru a descărca conținutul dintr-un depozit la distanță. git fetch este folosit în combinație cu git remote, git branch, git checkout și git reset pentru a actualiza un depozit local de stat de la distanță. Comanda git fetch este o piesă critică a fluxurilor de lucru colaborative git., git fetch has similar behavior to git pull, however, git fetch can be considered a safer, nondestructive version.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *