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 less
arama yaptım --all
ve Git sürüm 1.6.6 için sürüm notları altında bulduğum şey :
git fetch
öğrendim--all
ve--multiple
seçenekler, birçok depodan getirme çalıştırmak ve--prune
bayat gitti uzaktan izleme dallarını kaldırma seçeneği. Bunlargit remote update
vegit remote prune
daha az gerekli (kaldırmak için bir plan yoktur)remote update
remote prune
olsa 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 update
komut 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 update
ve git fetch
gö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 --all
bayraktı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.default
repo yapılandırmanızda ayarlama yapmadıysanız ve ayrıca uzaktan kumandalarınızın hiçbiri remote.<name>.skipDefaultUpdate
true değerine ayarlanmadı.
Seyahatseverlerin Git yapılandırmasına şu anki 1.8.3.2 belgelerine söz etmez remotes.default
ayarı, 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 update
Komut . Bunlar ekip arkadaşlarınızdan, bir açık kaynak projesinin güvenilir topluluk üyelerinden veya benzerlerinden uzak olabilir.
Yani muhtemelen, remotes.default
ayarladı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>.skipDefaultUpdate
Ayara 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 fetch
ve remote update
birden ç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 --multiple
bir 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>s
belirtilebilir.
Belirsizlik git remote update
Dokü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, update
komutun 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 update
aynı ş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 update
tek bir uzaktan kumanda grubundan başka bir şey getirmenin mümkün olup olmadığı konusunda net değil .
Ben açıkladım gibi, git fetch
ve git remote update
birden ç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 update
gibi 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 fetch
ve git remote update
yukarıda örneklendirilen benzersiz değildir. Benzer bir durum fark ettim git rebase --onto
ve git cherry-pick
her 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-pick
geç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-pick
bir dizi taahhüt seçmeyi öğrendi (ör.cherry-pick A..B
vecherry-pick --stdin
)git revert
; bunlarrebase [-i]
olsa da güzel sıralama kontrolü desteklemiyor .
Evet ve hayır. git remote update
sadece bir tane değil, tüm uzaktan kumandalardan alır.
remote update
Sadece 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 remote
bir kabuk komut dosyası değildir, ancak git fetch
bir sırasında ortaya çıkar remote update
.
git fetch
komut seçeneği var mı git remote update
?
git fetch --all
git rebase
Gibimv
vegit cherry-pick
gibidircp
.--onto
Anahtar bu değişmez.git rebase
Yalnızca SHA1 değerlerini belirtirseniz bir kopyalama efekti elde edebilirsiniz , aksi takdirde dalınız taşınır!