Koks skirtumas tarp „git pull“ ir „git fetch“?

Moderatoriaus pastaba. Atsižvelgiant į tai, kad šiam klausimui jau buvo išsiųsti šešiasdešimt septyni atsakymai (kai kurie iš jų buvo ištrinti), apsvarstykite, ar prieš pridėdami kitą, pridedate kažką naujo .

Kokie yra skirtumai tarp „ git pull ir „ git fetch ?

10,500
15 нояб. set pupeno 15 nov. 2008-11-15 12:51 '08, 12:51, 2008-11-15 12:51
@ 46 atsakymai
  • 1
  • 2

Pro Git sect; 2.5 „Git“ pagrindai - nuotolinio valdymo pultų naudojimas : iš nuotolinio valdymo pulto gaunamas ir gaunamas :

Svarbu pažymėti, kad komanda „Fetch“ iškelia duomenis į jūsų vietinę saugyklą - ji automatiškai neprisijungia prie jokio jūsų darbo arba nekeičia to, ką šiuo metu dirbate. Jūs turite rankiniu būdu jį sujungti į savo darbą, kai būsite pasiruošę.

Jei turite filialą, sukonfigūruotą stebėti nuotolinį filialą, galite naudoti „ git pull kad automatiškai gautumėte ir tada sujungtumėte nuotolinį valdiklį, kad prisijungtumėte prie dabartinio filialo. Jums gali būti lengviau arba patogiau dirbti; ir pagal nutylėjimą git clone komanda automatiškai sukonfigūruoja vietinį pagrindinį filialą stebėti nuotolinį pagrindinį serverį, iš kurio klonavote (su sąlyga, kad pagrindinis filialas). Vykdant „ git pull paprastai pasirenkami duomenys iš serverio, iš kurio jį klonavote ir automatiškai bandote sujungti jį su šiuo metu dirbamu kodu.

27
28 июля '14 в 11:28 2014-07-28 11:28 atsakymas pateikiamas Zhenxiao Hao liepos 28 d. 14 val. 2014-07-28 11:28

Turėkite omenyje gito pobūdį. Turite konsolių ir vietinių filialų (nebūtinai tas pats). Palyginti su kitomis šaltinių valdymo sistemomis, tai gali būti šiek tiek sumaištinga.

Paprastai tikrinant nuotolinį kompiuterį sukuriama vietinė kopija, kuri seka nuotolinę prieigą.

„git fetch“ veiks su nuotoliniu filialu ir atnaujins jūsų informaciją.

Tiesą sakant, jei kitos SWE veikia tą patį filialą, o retai - mažame viename skyriuje - viename skyriuje - vienas projekto scenarijus.

border=0

Jūsų darbas vietiniame skyriuje vis dar nepaliestas. Jei norite pakeisti vietinį padalinį, turite sujungti / iš naujo įdiegti pakeitimus iš tolimesnio filialo.

„git pull“ atlieka būtent šiuos du žingsnius (t. y. - grįžti į bazę, o ne sujungti)

Jei jūsų vietinė istorija ir nuotolinė istorija turi konfliktų, jūs būsite priversti sujungti, paspausdami „git“, kad paskelbtumėte pakeitimus.

Taigi tai tikrai priklauso nuo jūsų darbo aplinkos pobūdžio ir naudojimo patirties.

22
25 сент. atsakymas pateikiamas g24l 25 sep . 2015-09-25 12:46 '15, 12:46, 2015-09-25 12:46

git traukti

Ji atlieka dvi funkcijas naudodama vieną komandą.

Jis atsiunčia visus nuotolinio filialo pakeitimus ir tada sujungia šiuos pakeitimus į vietinį padalinį. Taip pat galite keisti traukos elgseną, pereidami --rebase. Čia galima perskaityti skirtumą tarp susiliejimo ir perkrovimo .

git atnešti

„Git“ atneša tik pusę „git pull“ darbo. Jis tiesiog perkelia nuotolinius pakeitimus į vietinę repo, tačiau netaiko jų filialams. Turite aiškiai taikyti šiuos pakeitimus. Tai galima padaryti taip:

 git fetch git rebase origin/master 
22
12 июля '15 в 8:39 2015-07-12 08:39 atsakymą pateikė Animesh Sharma, liepos 12 d., 15 val. 8:39 2015-07-12 08:39

git cheat sąrašo :

 git fetch <remote> // Download all changes from <remote>, but don't integrate into HEAD git pull <remote> <branch> // Download changes and directly merge/integrate into HEAD 
20
17 авг. Nan Xiao atsakymas 17 rug. 2015-08-17 04:37 '15 , 4:37 2015-08-17 04:37

„Git Pull“:

Iš to, ką aš suprantu, „git pull“ ištraukia iš nuotolio viską, ko prašote (taigi, nesvarbu, kas prašoma iš jūsų), ir nedelsiant sujungti jį į filialą, kai pateikiate užklausą. Ištrauka yra aukšto lygio užklausa, kuri sukelia „išieškojimą“, o tada „numatytąjį sujungimą“ arba „nuolaidą“ su bazine duomenų baze. Galite tai padaryti be jo, tai tik patogumas.

 %> git checkout localBranch %> git pull origin master %> git branch master * localBranch 

Anksčiau minėtas filialas bus sujungtas į vietinį „vietinį skyrių“.


„Git“ parsisiuntimas:

Fetch yra panašus į traukimą, išskyrus tai, kad jis nebus sujungtas.

 %> git checkout localBranch %> git fetch origin remoteBranch %> git branch master * localBranch remoteBranch 

Taigi, pavyzdys ištrins nuotolinį mazgą ir įdės jį į vietinį skyrių „RemoteBranch“. sukuria vietinę nuotolinio filialo kopiją, kurią neturėtumėte tiesiogiai manipuliuoti; vietoj to, sukurkite tinkamą vietinį padalinį ir dirbkite su juo. „Git Checkout“ turi painią funkciją. Jei patikrinate vietinę nuotolinio filialo kopiją, ji sukuria vietinę kopiją ir nustato numatytąjį sujungimą.

20
15 февр. atsakė Syeful Islam vasario 15 d 2015-02-15 18:27 '15, 18:27 2015-02-15 18:27

pasirinkti vs traukti

parsisiuntimas atsiųs visus nuotolinio filialo pakeitimus, atnaujins saugyklos duomenis, bet paliks jūsų vietinį skyrių.

„pull“ atlieka mėginį ir papildomai sujungia pakeitimus į vietinį skyrių.

Koks skirtumas? patraukia atnaujintą vietinį padalinį su pakeitimais iš traukiamos šakos. Ištraukimas neskatina jūsų vietos filialo.

19
06 сент. atsakymas, kurį pateikė Mohammed Dawood Ansari. 2015-09-06 20:10 '15 ne 20:10 2015-09-06 20:10

Iš to, ką supratau

Git traukimas Jis atkreipia dėmesį į nurodytą konsolę (kurią nurodo vartotojas) ir iškart sujungia jį į filialą, kuriame mes esame dabar. Tai iš esmės yra „Fetch and Merge“ komandų derinys.

„Git“ parsisiuntimas Tai yra tokia pati, kaip ir „Pull“, bet ji nebus sujungta. Tokiu būdu galite atidžiai stebėti failus prieš susijungimą.

Šis URL turėtų padėti geriau suprasti: skirtumą tarp „git pull“, „git“ parsisiuntimo ir „git“ klono (ir „git rebase“).

15
02 апр. Atsakymas duotas Pragyaditya Das 02 Bal. 2016-04-02 08:34 '16 at 8:34 am 2016-04-02 08:34

Paprasčiausiai mes galime apibrėžti kaip:

Fetch

$ git atneša kilmę

„Git Fetch“ tik atsiunčia naujus duomenis iš nuotolinio saugyklos, tačiau ji neįtraukia nė vieno iš šių naujų duomenų į savo darbo failus. „Fetch“ yra puiki, kad gautumėte naują apžvalgą apie visus dalykus, kurie įvyko nuotolinėje saugykloje.

Dėl savo nekenksmingos prigimties, galite būti tikri, kad mėginys niekada nekenks, neišnyks ar nepažeis nieko. Tai reiškia, kad jūs niekada negalėsite pakankamai dažnai.

Ištraukite

$ git sukuria sukibimą

Priešingai, „Git Pull“ yra naudojamas kitam tikslui: atnaujinkite dabartinį HEAD filialą su naujausiais nuotolinio serverio pakeitimais. Tai reiškia, kad traukite ne tik įkelia naujus duomenis, bet ir tiesiogiai integruoja jį į dabartinius darbo kopijos failus.

Tai turi keletą pasekmių:

  • Kadangi „git pull“ bando sujungti nuotolinius pakeitimus su vietiniais, gali atsirasti vadinamasis „sujungimo konfliktas“.

  • Kaip ir daugelyje kitų veiksmų, labai rekomenduojama „git pull“ paleisti tik su švaria darbo kopija.

  • Tai reiškia, kad prieš traukdami, neturėtumėte turėti jokių vietos pakeitimų. Naudokite „Git s Stash“ funkciją, kad laikinai išsaugotumėte vietinius pakeitimus.

11
30 нояб. Atsakymą pateikė Sandy Nov. 30. 2016-11-30 08:56 '16 at 8:56 2016-11-30 08:56

Trumpai tariant:

git fetch : Pažiūrėkite, ar yra naujų dalykų.

git pull : paimkite naują medžiagą ir įdėkite jį į viršų.

7
01 февр. atsakymas pateikiamas miva2 01 vasaris 2018-02-01 17:39 '18 at 17:39 pm 2018-02-01 17:39

Manau, kad dauguma atsakymų į šį skirtumą buvo gana gerai. Norėčiau pabrėžti, kada jį naudoti.

2019

01 авг. atsakymas pateiktas ishandutta2007 01 rugpjūtis. 2018-08-01 07:09 '18, 07:09 2018-08-01 07:09

„Git“ parsisiuntimas

Padeda sužinoti apie naujausius naujinius su „ git repository . Tarkime, jūs dirbate komandoje, naudodami „ GitFlow , kur komanda dirba su keliomis branches (funkcijomis). Su command git fetch --all galite sužinoti apie visus naujus branches repository .

Dažniausiai „ git fetch naudojamas su git reset . Pvz., Norite grąžinti visus dabartinius kapinyno būsenos pakeitimus.

 git fetch --all // get known about latest updates git reset --hard origin/[branch] // revert to current branch state 

Git traukimas

Ši komanda atnaujina branch su dabartine repository branch būsena. Tęskite „ GitFlow . Įvairių branches funkcija nuo merged buvo develop filialams develop , o kai norėsite sukurti naujas projekto funkcijas, turite eiti į branch ir padaryti git pull kad būtų gauta dabartinė branch būklė.

Dokumentacija „GitFlow“ https://gist.github.com/peterdeweese/4251497

3
22 дек. Andrei Todorut atsakymas gruodžio 22 d 2017-12-22 23:36 '17 ne 23:36 2017-12-22 23:36

„git pull“ ir „git“ parsisiuntimas turi skirtingus naudojimo būdus, net jei jie paprastai naudojami panašiai. Svarbu suprasti, ką naudoti ir kada.

„git fetch“ atsisiunčia naujausius pakeitimus iš nuotolinio įrenginio, tačiau neturi įtakos jūsų darbo kopijai ar filialams vietinėje saugykloje. Įkelta atšaka saugoma, pavyzdžiui,. Kilmė / šeimininkas

„git pull“ efektyviai ištraukia, po to git sujungia /. Bet kokie nuotolinio saugyklos pakeitimai sujungiami į jūsų vietinį skyrių. Tai naudinga, jei norite, kad vietinė saugykla atspindėtų nuotoliniame kompiuteryje įvykusius pakeitimus, bet paprastai yra priešingi, kai dirbate filialuose ir bendradarbiaujate su kitais nuotoliniame kompiuteryje.

2
10 нояб. atsakymą pateikė Ayeshmantha Perera . 2017-11-10 15:11 '17 at 15:11 2017-11-10 15:11

„Git“ atsiuntimas sinchronizuoja nuotolinio saugyklos katalogą su vietiniu. Jis neprisijungs failo / kodo pakeitimų iš nuotolinio kompiuterio į vietinį padalinį.

„Git“ traukia apkrovas, susijusias su jūsų dabartiniu vietiniu filialu, ir tada jas sujungia.

1
24 нояб. atsakymą pateikė Arnel Lenteria 24 nov. 2016-11-24 13:17 '16, 13:17 pm 2016-11-24 13:17
 git pull = git fetch + git merge 

www.azarnewsonline.com

0
30 нояб. atsakymas pateikiamas mehdi lapkričio 30 d 2018-11-30 14:45 '18, 14:45 pm 2018-11-30 14:45

Pažvelkite į žemiau pateiktą paveikslėlį, tai yra sourcetree pavyzdys arba ištrauktas, bet ne ištrauktas pokytis.

1) Atlikus paiešką, šie skaičiai rodo, kiek pakeitimų nėra sujungtos su dabartine darbo kopija. ST rodinyje jūsų pasirinktas keitimo rinkinys nebus paskutinė data (raudona rodyklė) pasirinktoje šakoje. Darbo vieta nebus paveikta po ekstrahavimo, nes tai tik su nuotoliniu atpirkimu atliktų keitimų rinkinių sinchronizavimas.

2) Jei paspausite Pull, dabartinė darbo kopija bus atnaujinta su visais šiais pakeitimų rinkiniais, o žurnalo peržiūros režime pasirinktas pakeitimų rinkinys bus paskutinis darbo šakoje. Be to, gali kilti konfliktų sujungimas.

2019

23 нояб. Atsakymas pateikiamas KEMBL 23 lapkričio. 2017-11-23 13:27 '17, 13:27 pm 2017-11-23 13:27
  • git pull :
    • Įtraukiami pakeitimai iš nuotolinio saugyklos į esamą filialą.
    • Numatytu režimu „ git pull yra „ git merge FETCH_HEAD santrumpa, po kurios seka „ git merge FETCH_HEAD .
  • git fetch
    • Objektų ir nuorodų atsisiuntimas iš kitos saugyklos.

Vykdydami ruožo užklausą užtemdydami, matome „git“ parsisiuntimą ir rezultatus atnaujinkite taip:
2019

13 дек. Atsakymas pateikiamas Premraj 13 d. 2017-12-13 08:08 '17, 08:08 2017-12-13 08:08
  • 1
  • 2

Kiti klausimai apie „ žymes arba užduoti klausimą