Moderatoriaus pastaba: Atsižvelgiant į tai, kad į šį klausimą jau buvo paskelbti šešiasdešimt septyni atsakymai (kai kurie iš jų buvo ištrinti), prieš skelbdami kitą klausimą, apsvarstykite, ar į jį įnešite ką nors naujo***.
Kuo skiriasi git pull
ir git fetch
?
Paprasčiau tariant, git pull
atlieka git fetch
, po kurio seka git merge
.
Bet kuriuo metu galite atlikti git fetch
, kad atnaujintumėte nuotolinio stebėjimo šakas, esančias refs/remotes/<remote>/
.
Ši operacija niekada nekeičia jokių jūsų vietinių šakų, esančių refs/heads
, ir ją galima atlikti saugiai, nekeičiant darbinės kopijos. Esu net girdėjęs, kad žmonės periodiškai fone paleidžia git fetch
kaip cron užduotį (nors to daryti nerekomenduočiau).
git pull
yra tai, ką turėtumėte daryti, norėdami vietinę šaką atnaujinti iki nuotolinės versijos, kartu atnaujindami ir kitas nuotoliniu būdu sekamas šakas.
Git dokumentacija - git pull:
Pagal numatytuosius nustatymus git pull
yra trumpinys, reiškiantis git fetch
, po kurio seka git merge FETCH_HEAD
.
Vienas iš git fetch
panaudojimo atvejų yra tas, kad toliau pateikiamas pranešimas apie bet kokius pakeitimus nutolusioje šakoje nuo paskutinio ištraukimo, todėl galite patikrinti prieš atlikdami faktinį ištraukimą, kuris gali pakeisti dabartinės šakos ir darbinės kopijos failus.
git fetch
git diff ...origin
Žr. https://git-scm.com/docs/git-diff dėl dvigubo ir trigubo taško sintaksės komandoje "diff".
git-pull - paimti iš kitos saugyklos arba vietinės šakos ir sujungti su ja SYNOPSISgit pull
... APRAŠYMAS Atlieka git-fetch su nurodytais parametrais ir iškviečia git-merge, kad sujungtų gautą (-as) galvą (-as) į dabartinę šaką. Naudojant --rebase, iškviečiama git-rebase vietoj git-merge.
Atkreipkite dėmesį, kad galite naudoti . (dabartinį katalogą) kaip <saugyklą>, kad ištrauktumėte iš vietinės saugyklos - tai naudinga jungiant vietines šakas. į dabartinę šaką.
Taip pat atkreipkite dėmesį, kad parinktys, skirtos pačiam git-pull ir pagrindinei git-merge turi būti pateiktos prieš parinktis, skirtas git-fetch.
Jei norite, kad istorijos būtų sujungtos, turėtumėte pull, o jei norite tik 'norėti codez', kaip kažkoks žmogus čia pažymėjo kai kuriuos straipsnius, turėtumėte fetch.