'Git pull' və 'get fetch' arasındakı fərq nədir?

Moderatorun notu. Bu suallara altmış yeddi cavab göndərildiyini nəzərə alsaq (bəziləri silinmişdir), başqa bir şey göndərməzdən əvvəl yeni bir şey əlavə edirsiniz.

git pullgit fetch arasında hansı fərqlər var?

10.500
15 нояб. pupeno 15 noyabr təyin edin . 2008-11-15 12:51 '08 at 12:51 2008-11-15 12:51
@ 46 cavab
  • 1
  • 2

Sadə şərtlərdə, git fetch git merge izlədikdən sonrakı bir git fetch yerinə yetirir.

Siz uzaqdan izləmə filiallarını refs/remotes/<remote>/ .

Bu əməliyyat, yerli şöbələrdən hər hansı birinin refs/heads heç bir dəyişiklik etməməsi və işin surətini dəyişdirmədən təhlükəsizdir. Hətta bəzən arxa planda cron işi ilə məşğul olan adamların git fetch eşitdim (baxmayaraq ki, bunu etməyəcəyəm).

Açıq git pull , yerli şöbəni uzaqdan versiyasını yeniləmək və başqa uzaqdan izləmə şöbələrini yeniləmək üçün nə edəcəyinizdir.

Git sənədləri: Git çəkin

8755
15 нояб. Greg Hewgill tərəfindən verilmiş cavab 15 noyabr 2008-11-15 12:52 '08 at 12:52 2008-11-15 12:52
  • Çekim istifadə etdiyiniz zaman, Git sizin üçün avtomatik olaraq işinizi etməyə çalışır. Bu kontekstə həssasdır , buna görə Git hazırda işlədiyiniz şöbəyə hər hansı bir təkan verməyəcək. Avtomatik olaraq avtomatik pull onları əvvəlcə görməyinizə görə birləşdirir . Filialların idarə edilməsində çox yaxşı deyilsinizsə, tez-tez qarşıdurmalarla qarşılaşa bilərsiniz.

  • fetch zaman, Git, mövcud filialınızda olmayan hədəf şöbəsindən hər hansı bir əmr toplamaq, lakin onları yerli ehtiyatınıza yerləşdirin . Ancaq bunları mövcud filialla birləşdirmir . Bu daima deposunu yeniləməlisiniz, ancaq fayllarınızı yeniləyirsinizsə, nə işləyə biləcəyi barədə işləmək lazımdır. Əsirləri əsas şöbəyə inteqrasiya etmək üçün merge istifadə edirsiniz.

border=0
1919
18 авг. Mouna Cheikhna tərəfindən verilmiş cavab 18 av . 2011-08-18 11:53 '11 at 11:53 2011-08-18 11:53

Go dizayn fəlsəfəsini SVN kimi ənənəvi mənbə idarəetmə vasitəsi fəlsəfəsi ilə fərqləndirmək vacibdir.

Subversion bir müştəri / server modeli istifadə edərək dizayn edilmiş və qurulmuşdur. Bir server olan bir verilənlər bazası var və bir neçə müştəri serverdən kodu çıxarır, onunla işləyir və sonra onu serverə köçürə bilər. Əməliyyat aparmaq üçün müştəri həmişə serverlə əlaqə saxlaya bilər.

Git, mərkəzi bir depoya ehtiyac olmadan daha çox paylanmış bir modeli dəstəkləmək üçün nəzərdə tutulmuşdu (baxmayaraq ki, istədiyiniz halda istifadə edə bilərsiniz). Həmçinin, git, müştəri və "server" eyni zamanda onlayn olmaması üçün nəzərdə tutulmuşdu. Git, etibarsız bir linkdə olan insanlar hətta e-poçt vasitəsilə kodu dəyişdirə bilməsi üçün nəzərdə tutulmuşdu. Siz işi tamamilə aradan buraxa və birbaşa kod vasitəsilə keçid kodunu yaza bilərsiniz.

Bu modeli dəstəkləmək üçün, git kodu ilə yerli bir deposu saxlayır, eləcə də uzaq depo vəziyyətini əks etdirən əlavə yerli ehtiyat saxlayır. Uzaq havuzun bir nüsxəsini yerli olaraq saxlayaraq, uzaq ehtiyat mövcud deyil olsa da, git dəyişiklikləri müəyyən edə bilər. Daha sonra, başqasına dəyişikliklər göndərmək lazım olduğunda, onları uzaq havuza bildiyiniz vaxtdan bir dəyişiklik dəsti kimi köçürə bilər.

  • git fetch deyir ki, bir əmrdir: "Uzaqdan mənbənin yerli nüsxəsini günə gətirin."

  • git pull getmək deyir: "Öz kodumu saxladığım yerdə uzaq məntəqəyə dəyişiklik gətirin."

Normal olaraq, git pull , uzaq deponun lokal bir kopyasını güncellemek üçün git fetch bunu yapar ve sonra değişiklikleri kendi kodu depolarınıza ve muhtemelen çalışma kopyalarınıza birleştirin.

İş yerinizdə layihənin ən azı üç nüsxəsi olduğunu unutmayın. Bir surəti öz öhdəlik tarixinə malikdir. İkinci nüsxə, sizin redaktə etdiyiniz və qurduğunuz iş kopyasıdır. Üçüncü nüsxə, uzaq deponun yerli "kağızı" surətidir.

1066
31 марта '13 в 21:43 2013-03-31 21:43 Cavab MikeD tərəfindən verilir 31 Mart 'da 21:43' da 2013-03-31 21:43
711
09 июня '15 в 16:30 2015-06-09 16:30 Cavab Cavab 09 iyun '15 saat 16:30 'da verilir

git fetch bir istifadə edilməsi, sonuncu çəkilişdən sonra uzaq şöbənin hər hansı bir dəyişikliyi barədə sizə xəbər verəcəkdir ... belə ki, faktiki çəkməyi həyata keçirməzdən əvvəl yoxlaya bilərsiniz, bu, mövcud filialındakı faylları dəyişə və bir surəti .

 git fetch git diff ...origin 
437
07 мая '10 в 22:23 2010-05-07 22:23 cavab 07 may 2010 - cu il tarixində, saat 10: 23-da, mələklərə verilir

Farkın nə olduğunu bir az başa düşmək məcburiyyətindəyəm, amma bu sadə bir izahatdır. localhost'unuzda master bir filialdır.

Bir deposu klonladığınızda, yerli ev sahibi üçün bütün depoyu alırsınız. Yəni, bu anda HEAD mənşə / usta göstəriciniz var və ustad eyni HEAD işarə edir.

işə başladınız və bunu edərkən, master göstəricisini HEAD + 'a HEAD göndərin. Amma mənşəyi / master göstəricisi hələ klonlandığında nə olduğunu göstərir.

Beləliklə, fərq:

  • git fetch istəyirsinizsə, sadəcə uzaq depoda ( GitHub ) olan bütün dəyişiklikləri çıxaracaq və start / master göstəricisini HEAD ə daşıyacaqsınız. Bununla yanaşı, yerli şöbə sihirbazınız harada olduğu barədə göstərməyə davam edəcəkdir.
  • git pull istəyirsinizsə, əsasən (daha əvvəl açıqlandığı kimi) özü çıxaracaq və əsas şöbəyə hər hansı yeni dəyişiklikləri birləşdirəcək və göstəricini HEAD ə daşıyacaq.
347
11 мая '12 в 21:37 2012-05-11 21:37 cavab 11 may 2012-ci ildə saat 21: 37-da Gerardo verilir

Bəzən vizual təqdimat kömək edir.

2019

25 янв. cənab Sərhədçi tərəfindən cavab verilir 25 yanvar. 2016-01-25 20:28 '16 saat 20:28 'da 2016-01-25 20:28

qısaca

git fetch pull bənzəyir, lakin birləşməyib. yəni, uzaqdan yeniləmələri çıxarır ( refsobjects ), lakin yerli qalıqlarınız dəyişməzdir (yəni origin/master yenilənir, amma master eynidır).

git pull konsoldan atılır və dərhal birləşir.

Daha çox

git clone klon repos.

git rebase , müvəqqəti sahəyə artan filialda olmayan mövcud filialdan material saxlayır. Sizin mövzu artıq dəyişikliklərinizi başlamazdan əvvəl eynidır. Beləliklə, git pull -rebase , silinən dəyişiklikləri çıxardır, yerli şöbəni geri git pull -rebase ən son inkişaflarla gündəmə qədər dəyişiklikləri cari filialın başında təkrarlayır.

Bundan əlavə, git branch -a - yerli və uzaqdan bütün filiallarla nə baş verdiyini tam olaraq göstərəcəkdir.

Bu blog yazısı faydalı oldu:

Git pull, git get və git clone (və git rebase) arasında fərq - Mike Pierce

git fetch , git clone git fetch , git clonegit rebase .

====

ƏLAVƏ OLUNUB

Mən bunu praktikada necə istifadə etdiyini göstərmək üçün onu yeniləməyəm.

  1. Yerli reponunuzu uzaq bir cihazdan yeniləyin (lakin birləşməyin):

     git fetch 
  2. Güncellemeleri indirdikten sonra, fərqlərə baxın:

     git diff master origin/master 
  3. Bu yeniliklərdən xoşbəxt olursanız, birləşdirin:

     git pull 

Qeydlər:

2-ci addımda: Yerli və uzaq qurğular arasındakı fərqlər haqqında daha ətraflı məlumat üçün bax: Bölmə: Yerli bir qubanı uzaq bir filial ilə müqayisə etmək olar?

3 addımda: Çox güman ki, git rebase origin etmək üçün daha dəqiq (məsələn, sürətlə dəyişən repo). Digər bir cavabda @ Justin Ohms-a baxın.

Həmçinin baxın: http://longair.net/blog/2009/04/16/git-fetch-and-merge/

170
13 апр. Cavab Snowcrash Apr 13 2013-04-13 20:31 '13 at 8:31 pm 2013-04-13 20:31
 git-pull - başqa bir depo və ya yerli şöbədən birləşdirin və birləşdirin SYNOPSIS git çəkin ... TƏSVİRİ Gəzintiyi çəkir  Mövcud şöbəyə baş (lər) i çıxardı.  - Baza ilə, git-rebase çağırır  git-birləşmənin yerinə. Istifadə edə bilərsiniz unutmayın.  (cari qovluq) çəkmək üçün <repository> kimi istifadə edin  yerli ehtiyatlardan - yerli filialların birləşməsində faydalıdır  mövcud filial daxil. Git-çəkin  get-fetch üçün.

Hekayələrinizin birləşməsini istəyirsinizsə, çəkəcəksiniz ki, yalnız "kodu istəmisiniz", çünki bəziləri burada bəzi məqalələri yazıblar.

161
15 нояб. Vinko Vrsalovic tərəfindən verilmiş cavab 15 noyabr 2008-11-15 12:52 '08 at 12:52 2008-11-15 12:52

Uzaq havuzdan çıxarış edə bilərsiniz, fərqləri görmək və sonra çəkin və ya birləşdirin.

Bu origin və uzaq origin/master şöbəsini izləyən master adlı bir filiala aid bir məsafəli datanın nümunəsidir:

 git checkout master git fetch git diff origin/master git rebase origin master 
147
21 марта '11 в 14:07 2011-03-21 14:07 Cavab Antonio Bardazzi tərəfindən 21 Mart 'da 14:07' də verildi. 2011-03-21 14:07

Qısa və sadə cavab git merge sonra git merge .

git pull və ya istəmədiyinizi istəməsək, git pull avtomatik git pull qeyd etmək çox vacibdir. Əlbəttə, bu münaqişələrin birləşməsinə gətirib çıxara bilər. Gəlin konsolun origin və sənin şöhrətiniz olduğunu master . git diff origin/master əvvəl git diff origin/master olsanız, potensial birləşmə münaqişələrindən xəbərdar olmalı və yerli şöbəyə müvafiq olaraq hazırlaya bilərsiniz.

git rebase ve git rebase , bazı iş akışları git rebase , məsələn, git rebase :

 git pull origin master git checkout foo-branch git rebase master git push origin foo-branch 

Bu vəziyyətdə özünüzü git pull --rebase tərəfindən aldanmaq git pull --rebase . Əgər həqiqətən nə etdiyinizi bilmirsinizsə, bunu etməyi məsləhət görürəm. Bu, git-pull , versiya 2.3.5 üçün man səhifəsindən bir xəbərdarlıqdır:

Bu potensial təhlükəli əməliyyat üsuludur. Daha əvvəl bu hekayəni dərc etdirdiyiniz zaman yaxşı bir şey yazmayan bir hekayəni yenidən yazır. Go-rebase (1) -ni diqqətlə oxumamısanız bu parametrdən istifadə etməyin.

139
15 мая '11 в 23:53 2011-05-15 23:53 cavab 15 may 2011-ci il tarixdə saat 23:53 radələrində verilir

2019

117
06 февр. cavab cümə axşamı 06 fevralda verilir. 2015-02-06 14:48 '15 at 14:48 2015-02-06 14:48

Budur , git pull haqqında bəzi məlumatlar var, belə ki, faktiki fərqləri başa düşə bilərsiniz ... bir neçə sadə sözlə, alındıqda ən son məlumatlar alır, lakin kodunu dəyişdirmir və indiki yerli şifrə ilə əlaqə saxlamır, lakin kodunu dəyişikliklərlə çıxarın və yerli şöbünüzə birləşdirin, hər biri haqqında daha ətraflı məlumat almaq üçün oxuyun:

git getmək

Bütün bağlantılarıobyektləri və hər hansı yeni filialı yerli ehtiyatınıza endirəcəkdir ...

Bir və ya bir neçə başqa depolardan və onların hekayələrini başa çatdırmaq üçün lazım olan obyektlərlə birlikdə filial və / və ya etiketləri (birlikdə "refs") seçin. Uzaqdan izləmə filialları yeniləndi (bu davranışa nəzarət etmək üçün aşağıdakı təsvirə baxın).

Varsayılan olaraq, çıxarılmış hekayələri göstərən hər hansı bir etiket də alınır; təsir, maraqlandıran filiallara toxunan etiketləri çıxarmaqdır. Bu default davranış variantlardan istifadə etməklə dəyişdirilə bilər - tağlar və ya - nişanlar və ya uzaqdan tövsiyə olunur. Etiketleri açıqca çıxaran refspec istifadə edərək, maraqlandıran filialları göstərməyən etiketləri çıxarın.

Git alındıqda verilmiş bir verilənlər bazasından və ya URL'dən, yaxud bir neçə depolardan birdəfəlik alındıqda və konsollar var. konfiqurasiya faylına yazın. (Git-config 1 -ə baxın).

Heç bir uzaq cihaz müəyyən edilmədikdə, mövcud filial üçün bir yuxarı şöbəsi konfiqurasiya edilmədiyi halda, default start mənbəyi istifadə olunur.

Seçilən linklərin adları, göstərdikləri obyektlərin adları ilə yanaşı, in.git / FETCH_HEAD yazılır. Bu məlumat scripts və ya git-pull kimi digər git əmrləri ilə istifadə edilə bilər.


git çəkin

Uzaqdan yerli şöbələrə yerli dəyişikliklər tətbiq ediləcək ...

Uzaq bir deposundan mövcud filiala dəyişikliklər daxildir. Varsayımlı rejimdə, git getmək, git getmək üçün bir qisimdir və onu izlədikdən sonra FETCH_HEAD birləşir.

Daha konkret olaraq, git getmək, verilən parametrlər ilə get çəkir və alınan filial başlıqlarını cari şöbəyə birləşdirmək üçün zəngləri birləşdirir. - Baza istifadə edərək, git birləşməsi yerinə git rebase çalışır.

git-fetch 1 -ə keçmiş uzaq dükanın adı olmalıdır. (məsələn, refs / heads /: refs / remotes / origin /) ilə əlaqəli bir uzaqdan uzaq ref (məsələn, tag adı) və ya hətta uzaqdan izləmə filialları ilə əlaqələrin toplusu ola bilər, lakin adətən bu, uzaq havuzdakı filialın adıdır.

Git-filial --track tərəfindən təyin olunan mövcud filial üçün "default" və "birləşmə" konfiqurasiyasından olan default dəyərlər oxunur və oxunur.


Mən də sizə git fetchgit fetch birlikdə iş git pull göstərmək üçün bir əyani image yaradın ...

2019

Mən bu şeyləri başa düşmək üçün vəziyyətin vizual bir şəkildə göstərilməsini istəyirəm. Bəlkə digər inkişafçılar bunu da görmək istəyirlər, buna görə mənim əlavə edirəm. Hər şeyin doğru olduğundan əmin deyiləm, hər hansı bir səhv tapmaqla bağlı şərh edin.

  LOCAL SYSTEM . ===================================================== ================= . ================= =================== ============= REMOTE REPOSITORY . REMOTE REPOSITORY LOCAL REPOSITORY WORKING COPY (ORIGIN) . (CACHED) for example, . mirror of the a github repo. . remote repo Can also be . multiple repo . . . FETCH *------------------>* Your local cache of the remote is updated with the origin (or multiple external sources, that is git distributed nature) . PULL *-------------------------------------------------------->* changes are merged directly into your local copy. when conflicts occur, you are asked for decisions. . COMMIT . *<---------------* When coming from, for example, subversion, you might think that a commit will update the origin. In git, a commit is only done to your local repo. . PUSH *<---------------------------------------* Synchronizes your changes back into the origin. 

Konsol yansıtma təsvirinə sahib olmanın əsas faydaları bunlardır:

  • Performans (şəbəkə vasitəsilə kompressor etməyə cəhd etmədən bütün əməlləri və mesajları hərəkət etdirmək)
  • Yerli reponun statusu ilə əlaqə saxlayır (məsələn, Mən Atlasian SourceTree istifadə edirəm, mənə mənbə ilə müqayisədə irəli və ya geri getmək olub-olmadığını göstərən bir ampul verəcəkdir.) GIT FETCH ilə yeniləyin.
107
20 февр. Cavab 20 fevralda Justus Romijn tərəfindən verilir. 2014-02-20 00:18 '14 'də 0:18 2014-02-20 00:18

Mən də bununla mübarizə edirdim. Əslində, eyni sual üçün Google axtarışı ilə buraya gəldim. Bütün bu cavabı oxuduqdan sonra nəhayət mənim başımda bir şəkil çəkdirdilər və 2 ədəd depo və 1 ədəd sandbox dövləti ilə məşğul olmaq qərarına gəldim. Beləliklə, bu mənimlə gələn şeydir. Boşaldığım halda məni düzəlt.

Nümunə ilə üç ehtiyat:

 --------------------- ----------------------- ----------------------- - Remote Repo - - Remote Repo - - Remote Repo - - - - gets pushed - - - - @ R01 - - @ R02 - - @ R02 - --------------------- ----------------------- ----------------------- --------------------- ----------------------- ----------------------- - Local Repo - - Local Repo - - Local Repo - - pull - - - - fetch - - @ R01 - - @ R01 - - @ R02 - --------------------- ----------------------- ----------------------- --------------------- ----------------------- ----------------------- - Local Sandbox - - Local Sandbox - - Local Sandbox - - Checkout - - new work done - - - - @ R01 - - @ R01+ - - @R01+ - --------------------- ----------------------- ----------------------- 

Yükü olan üç çuxur

 --------------------- ----------------------- ----------------------- - Remote Repo - - Remote Repo - - Remote Repo - - - - gets pushed - - - - @ R01 - - @ R02 - - @ R02 - --------------------- ----------------------- ----------------------- --------------------- ----------------------- ----------------------- - Local Repo - - Local Repo - - Local Repo - - pull - - - - pull - - @ R01 - - @ R01 - - @ R02 - --------------------- ----------------------- ----------------------- --------------------- ----------------------- ----------------------- - Local Sandbox - - Local Sandbox - - Local Sandbox - - Checkout - - new work done - - merged with R02 - - @ R01 - - @ R01+ - - @R02+ - --------------------- ----------------------- ----------------------- 

Bu, nümunələrin seçilməsinin nə üçün çox vacib olduğunu başa düşməyə kömək etdi.

95
17 июля '12 в 19:43 2012-07-17 19:43 Cavab pn1 dude 17 iyul '12 saat 07:43 pm 2012-07-17 19:43 verilir

GIT FetchGIT Pull arasındakı fərq aşağıdakı senaryoda izah edilə bilər: (şəkillər sözlərdən daha sərfəli olduğunu xatırlayaraq xatırlayıram, bir qrafik təsvir təqdim etdim)

Gəlin komandanızın üzvləri ilə bir layihə üzərində işlədiyinizi qəbul edək. Beləliklə, onlar layihənin əsas bölmələrindən biri olacaqlar və bütün iştirakçılar öz yerli köşkələrində şöbələri açmalı və sonra modulları dəyişmək / əlavə etmək üçün bu yerli şöbədə işləməlidirlər və sonra əsas şöbəyə qayıdırlar.

Belə ki, iki filialın başlanğıc vəziyyəti, yerli vaqondakı əsas layihəni hazırladığınız zaman bu kimi olacaq ( A , BC layihədə artıq başa çatmış modullardır)

2019

ответ дан Aman Tiwari 07 февр. '17 в 17:15 2017-02-07 17:15

Мы просто говорим:

 git pull == git fetch + git merge 

Если вы запустите git pull , вам не нужно объединять данные с локальными. Если вы запустите git fetch , это означает, что вы должны запустить git merge для получения последнего кода на вашем локальном компьютере. В противном случае локальный машинный код не будет изменен без слияния.

Итак, в Git Gui, когда вы делаете выборку, вам нужно объединить данные. Извлечь сам себя не приведет к изменению кода на вашем локальном компьютере. Вы можете проверить, что при обновлении кода путем выборки после извлечения и просмотра; код он не изменится. Затем вы объединяетесь... Вы увидите измененный код.

79
ответ дан Selvamani 21 февр. '13 в 16:25 2013-02-21 16:25

git fetch выводит код с удаленного сервера на ваши ветки отслеживания в локальном репозитории. Если ваш пульт называется origin (по умолчанию), то эти ветки будут находиться в пределах origin/ , например origin/master , origin/mybranch-123 и т.д. Это не ваши текущие ветки, они являются локальными копиями этих ветвей из сервер.

git pull делает git fetch , но затем также объединяет код из ветки отслеживания в вашу текущую локальную версию этой ветки. Если вы еще не готовы к этим изменениям, сначала git fetch .

77
ответ дан Michael Durrant 19 сент. '13 в 23:01 2013-09-19 23:01

git fetch будет извлекать удаленные ветки, чтобы вы могли git diff или git merge их с текущей ветвью. git pull будет запускать выборку на удаленном плече, отслеживаемом текущей ветвью, а затем слить результат. Вы можете использовать git fetch , чтобы узнать, есть ли какие-либо обновления удаленной ветки без необходимости их слияния с вашей локальной ветвью.

73
ответ дан ntanase 27 нояб. '12 в 0:58 2012-11-27 00:58

Git Fetch

Вы загружаете изменения в локальную ветку из источника через выборку. Fetch запрашивает удаленное репо для всех коммитов, которые сделали другие, но у вас нет на вашем локальном репо. Fetch загружает эти коммиты и добавляет их в локальный репозиторий.

Git Слияние

Вы можете применить изменения, загруженные через выборку, с помощью команды merge. Merge берет полученные из выборки коммиты и пытается добавить их в локальную ветку. Слияние будет сохранять историю фиксации ваших локальных изменений, так что, когда вы делитесь своей веткой с push, Git будет знать, как другие могут объединить ваши изменения.

Git Pull

Считать и слить вместе достаточно часто, чтобы была создана команда, которая объединяет два, pull. Pull делает выборку, а затем слияние, чтобы добавить загруженные коммиты в вашу локальную ветвь.

69
ответ дан Pinkesh Sharma 14 июля '16 в 0:23 2016-07-14 00:23

Единственное различие между git pull и git fetch заключается в следующем:

git pull извлекает из удаленной ветки и объединяет его.

git fetch извлекает только из удаленной ветки, но не объединяется

то есть. git pull = git fetch + git merge...

47
ответ дан Rohitashv Singhal 04 июня '13 в 17:08 2013-06-04 17:08

Git позволяет хронологически более старые коммиты применяться после того, как новые коммиты. Из-за этого акт передачи фиксации между репозиториями делится на два этапа:

  • Копирование новых коммитов из удаленной ветки для копирования этой удаленной ветки внутри локального репо.

    (операция репо для операции репо) master@remote >> remote/origin/master@local

  • Интеграция новых коммитов в локальную ветвь

    (операция внутри-репо) remote/origin/master@local >> master@local

Есть два способа сделать шаг 2. Вы можете:

  • Вилка локального ветки после последнего общего предка и добавление новых коммитов, параллельных коммитам, которые уникальны для локального репозитория, финализируются путем слияния фиксации, закрытия вилки.
  • Вставить новые коммиты после последнего общего предка и повторно применить к локальному репозиторию.

В терминологии git шаг 1 равен git fetch , шаг 2 равен git merge или git rebase

git pull составляет git fetch и git merge

42
ответ дан Pawel Furmaniak 28 нояб. '13 в 20:03 2013-11-28 20:03

В чем разница между git pull и git fetch ?

Чтобы понять это, вам сначала нужно понять, что ваш локальный git поддерживает не только ваш локальный репозиторий, но также поддерживает локальную копию удаленного репозитория.

git fetch обновляет локальную копию удаленного репозитория. Например, если ваш удаленный репозиторий - это GitHub - вы можете захотеть извлечь любые изменения, сделанные в удаленном репозитории, в локальную копию этого удаленного хранилища. Это позволит вам выполнять такие операции, как сравнение или слияние.

git pull , с другой стороны, приведет к смене изменений в удаленном репозитории, где вы сохраните свой собственный код. Как правило, git pull сначала выполнит git fetch , чтобы обновить локальную копию удаленного репозитория, а затем объединить изменения в свой собственный репозиторий кода и, возможно, вашу рабочую копию.

35
ответ дан Donal 19 мая '15 в 14:57 2015-05-19 14:57

Git получает ветку последней версии от удаленного к локальному, используя две команды:

  • git fetch: Git собирается получить последнюю версию с удаленного на локальный, но она не будет автоматически сливаться. git fetch origin master git log -p master..origin/master git merge origin/master

    Приведенные выше команды означают, что загружать последнюю версию основной ветки из источника из удаленной в исходную ветвь оригинала. А затем сравнивает локальную ветвь ведущей ветки и начальную ветвь. Наконец, слейте.

  • Git pull: Git собирается получить последнюю версию с пульта и слить в локальный.

    git pull origin master

    Приведенная выше команда эквивалентна git fetch и git merge . На практике git fetch может быть более безопасным, поскольку перед слиянием мы можем видеть изменения и решать, сходиться ли.

33
ответ дан Marcus Thornton 12 авг. '14 в 7:00 2014-08-12 07:00

git pull == (git fetch + git merge)

git fetch не изменяется на локальные ветки.

Если у вас уже есть локальный репозиторий с удаленной настройкой для желаемого проекта, вы можете захватить все ветки и теги для существующего удаленного с помощью git fetch.... Fetch не вносит никаких изменений в локальные ветки, поэтому вам необходимо объединить удаленную ветку с парным локальным ветвью для включения новых изменений извлечения. из github

31
ответ дан Iggy 20 сент. '13 в 1:41 2013-09-20 01:41

Попытка быть понятной и простой.

Команда git pull на самом деле является shortcut для git fetch , за которой следует git слияние или git rebase в зависимости от вашей конфигурации. Вы можете настроить репозиторий Git, чтобы git pull - выборка, за которой следует rebase.

30
ответ дан montells 29 июля '15 в 21:38 2015-07-29 21:38

Фактически Git хранит копию вашего собственного кода и удаленный репозиторий.

Команда git fetch обновляет локальную копию, получая данные из удаленного репозитория. Причина, по которой мы нуждаемся в этом, - это то, что кто-то другой мог внести некоторые изменения в код, и вы хотите сохранить себя обновленным.

Команда git pull приносит изменения в удаленном репозитории, где вы храните свой собственный код. Обычно git pull делает это, делая сначала

30
ответ дан Pokemon 13 сент. '15 в 21:48 2015-09-13 21:48

Простое графическое представление для начинающих,

2019

ответ дан Mohideen ibn Mohammed 12 июля '17 в 9:23 2017-07-12 09:23
 git pull = git fetch + git merge 
28
ответ дан Saqib R. 12 июля '15 в 6:54 2015-07-12 06:54
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос