Yanıtlar:
GÜNCELLEME: daha fazla bilgi!
Bunu baştan yapmalıydım: Git'in Git deposundaki Git sürüm notlarını (yani meta!)
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
Sonra bir lessarama yaptım --allve Git sürüm 1.6.6 için sürüm notları altında bulduğum şey :
git fetchöğrendim--allve--multipleseçenekler, birçok depodan getirme çalıştırmak ve--prunebayat gitti uzaktan izleme dallarını kaldırma seçeneği. Bunlargit remote updatevegit remote prunedaha az gerekli (kaldırmak için bir plan yoktur)remote updateremote pruneolsa da , ne ne de ).
1.6.6 sürümü yayınlanmadı 23 Aralık 2009'a ve Orijinal Poster 6 Aralık 2009'da sorusunu sordu.
Sürüm notlarından da görebileceğiniz gibi, Git yazarları git remote updatekomut işlevselliğinin bir şekilde çoğaltıldığını biliyorlardı.git fetch , ancak mevcut komut dosyaları ve programlarla geriye dönük uyumluluk için kaldırmamaya karar verdiler, ya da belki çok fazla iş var ve daha yüksek öncelikli öğeler var.
Daha fazla ayrıntı içeren orijinal cevap
xenoterracide'ın cevabı şu anda 3,5 yaşında ve Git o zamandan beri çeşitli versiyonlardan geçti (bu yazıdan v1.6.5.5'ten v1.8.3.2'ye gitti ) ve ve şu anki belgelere bakıyor git remote updateve git fetchgörünüyor onlar gibi hem temelde birden çok kumanda yeni hareketin alma aynı işlevi gerçekleştirebilir doğru seçenekler ve argümanlar verilen.
Birden çok uzaktan kumanda almanın bir yolu --allbayraktır:
git fetch --all
Bu, sahip olmadığınız varsayılarak yapılandırılan tüm uzaktan kumandalarınızdan getirilir remote.<name>.skipFetchAll onlar için ayarlamadığınız :
True olursa, git-fetch (1) veya git-remote (1) güncelleme alt komutunu kullanarak güncelleme yaparken bu uzaktan kumanda varsayılan olarak atlanacaktır . - git-config belgeleri
Bu, kullanmaya eşdeğerdir
git remote update
getirilecek herhangi bir uzak grup belirtmeden ve ayrıca remotes.defaultrepo yapılandırmanızda ayarlama yapmadıysanız ve ayrıca uzaktan kumandalarınızın hiçbiri remote.<name>.skipDefaultUpdatetrue değerine ayarlanmadı.
Seyahatseverlerin Git yapılandırmasına şu anki 1.8.3.2 belgelerine söz etmez remotes.defaultayarı, ama bu konuda Yüce Google'ı danıştı ve bu yararlı açıklama bulundu Mislav Marohnić :
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
Tarafından getirilecek bir uzaktan kumanda listesi tanımlayabilirsiniz.
remote updateKomut . Bunlar ekip arkadaşlarınızdan, bir açık kaynak projesinin güvenilir topluluk üyelerinden veya benzerlerinden uzak olabilir.
Yani muhtemelen, remotes.defaultayarladıysanız ve tüm uzaktan kumandalarınız listede yoksa,git remote update yoksa, repounuzun "farkında" olduğu tüm uzaktan kumandaları getirmeyecektir.
remote.<name>.skipDefaultUpdateAyara gelince , Git belgeleri bunu şöyle açıklar:
True olursa, git-fetch (1) veya git-remote (1) güncelleme alt komutunu kullanarak güncelleme yaparken bu uzaktan kumanda varsayılan olarak atlanacaktır .
Bunun yerine tüm uzaktan kumanda getiriliyor, hem fetchve remote updatebirden çok uzaktan kumandalı ve getirmek için uzaktan kumanda gruplarını belirtmek için izin:
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch [<options>] <group>bir grubun parçası olan birden fazla uzaktan kumanda almanıza olanak tanır ( Mislav'dan başka bir örnek ödünç almak için ):
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git fetch --multiplebir kerede ( dokümanlardan ) alınacak birkaç havuz ve havuz grubu belirtmenize olanak tanır :
Birkaç tanesinin
<repository>ve<group>bağımsız değişkenlerin belirtilmesine izin verin . Hayır<refspec>sbelirtilebilir.
Belirsizlik git remote updateDokümantasyondaki
İçin özetgit remote update , komut sözdiziminin aşağıdaki gibi olduğunu belirtir:
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
Son kısmı fark ettiniz [(<group> | <remote>)…]mi? Sondaki noktalar ..., komutla birden çok grup ve uzaktan kumanda belirtebileceğiniz anlamına gelir, bu da komutun aynı şekilde davrandığı anlamına gelir.git fetch --multiple ... ikisi arasındaki sözdiziminin nasıl benzer olduğunu görüyor musunuz?
Ancak, aynı belgede, updatekomutun açıklaması, birden fazla grup ve uzak bağımsız değişken belirtme hakkında hiçbir şey söylemez, yalnızca
Tarafından tanımlandığı gibi depodaki adlandırılmış bir uzaktan kumanda seti için güncellemeler getir
remotes.<group>.
Bu nedenle, birden çok bağımsız uzaktan kumanda ve birden çok uzak grup belirtme konusunda git remote updateaynı şekilde çalışıp çalışmadığı belirsizdir git fetch --multiple.
Son olarak, herkes tek bir uzaktan kumandayı getirmenin basit bir vakasını biliyor:
git fetch <remote>
Kullanabileceğiniz de olabilir
git remote update <remote>
aynı şeyi yapmak için, ancak önceki bölümde belirttiğim gibi, belgelerin komutla git remote updatetek bir uzaktan kumanda grubundan başka bir şey getirmenin mümkün olup olmadığı konusunda net değil .
Ben açıkladım gibi, git fetchve git remote updatebirden çok kumanda dan getirilirken bakımından benzer şekilde hareket eder. Yine de benzer söz dizimi ve argümanları paylaşıyorlargit fetch daha kısa da, insanlar muhtemelen yazmayı ve kullanmayı daha kolay bulurlar.
Bu git remote updategibi tek bir uzaktan kumandayı almak için kullanılamayabilir git fetch, ancak işaret ettiğim gibi, belgeler bunu netleştirmiyor.
bir kenara
Git porselen komutları arasındaki işlevsellik, yukarıda git fetchve git remote updateyukarıda örneklendirilen benzersiz değildir. Benzer bir durum fark ettim git rebase --ontove git cherry-pickher ikisinin de yeni bir temel taahhüde yama yapmak için çeşitli taahhütler alabilmesi.
Git yıllar içinde geliştikçe, bazı işlevler (kaçınılmaz olarak?) Çoğaltılabilirdi, belki de bazen son kullanıcılar için bir kolaylık olarak (örneğin, bir aralığı cherry-pickgeçmek ve tekrar tekrar geçmek yerine) bir aralık seçmek için). Görünüşe göre v1.7.2 sürüm notlarındacherry-pick açıklandığı gibi her zaman bir dizi taahhüdü kabul etmedi :
git cherry-pickbir dizi taahhüt seçmeyi öğrendi (ör.cherry-pick A..Bvecherry-pick --stdin)git revert; bunlarrebase [-i]olsa da güzel sıralama kontrolü desteklemiyor .
Evet ve hayır. git remote updatesadece bir tane değil, tüm uzaktan kumandalardan alır.
remote updateSadece bir kabuk betiği olup olmadığını görmek için koda bakmadan (mümkün), temelde, her uzaktan kumanda için getirmeyi çalıştırır. git fetchçok daha ayrıntılı olabilir.
git remote update, bkz. Git-remote manpage.
git remotebir kabuk komut dosyası değildir, ancak git fetchbir sırasında ortaya çıkar remote update.
git fetchkomut seçeneği var mı git remote update?
git fetch --all
git rebaseGibimvvegit cherry-pickgibidircp.--ontoAnahtar bu değişmez.git rebaseYalnızca SHA1 değerlerini belirtirseniz bir kopyalama efekti elde edebilirsiniz , aksi takdirde dalınız taşınır!