जवाबों:
अद्यतन: अधिक जानकारी!
मुझे शुरू से ही ऐसा करना चाहिए था: मैंने गिट के गिट रेपो (इसलिए मेटा!) में जीआईटी रिलीज़ नोट्स को हटा दिया।
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
तब मैंने एक less
खोज की --all
, और यह मुझे Git संस्करण 1.6.6 के रिलीज़ नोट्स के तहत मिला :
git fetch
सीखा--all
और--multiple
विकल्प, कई रिपोजिटरी से लाने के लिए, और--prune
बासी चले गए दूरस्थ ट्रैकिंग शाखाओं को हटाने का विकल्प। ये बनाते हैंgit remote update
औरgit remote prune
कम आवश्यक होते हैं (remote update
न ही हटाने की कोई योजना हैremote prune
, हालांकि)।
संस्करण 1.6.6 को 23 दिसंबर 2009 तक जारी नहीं किया गया था , और मूल पोस्टर ने 6 दिसंबर 2009 को अपना प्रश्न पूछा था।
तो जैसा कि आप जारी नोटों से देख सकते हैं, गिट के लेखकों को इस तथ्य के बारे में पता git remote update
था कि कमांड कार्यक्षमता को कुछ हद तक दोहराया जा रहा था git fetch
, लेकिन उन्होंने इसे हटाने का फैसला किया, शायद मौजूदा स्क्रिप्ट और कार्यक्रमों के साथ पिछड़े संगतता के लिए, या शायद इसलिए। यह बहुत अधिक काम है और उच्च प्राथमिकता वाले आइटम हैं।
अधिक विवरण के साथ मूल उत्तर
xenoterracide का उत्तर अभी 3.5 साल पुराना है, और Git तब से कई संस्करणों से गुजरा है (यह इस लेखन के रूप में v1.6.5.5 से v1.8.3.2 तक चला गया है ), और इसके लिए वर्तमान प्रलेखन को देखते हुए, git remote update
और git fetch
यह दिखता है जैसे वे दोनों सही विकल्पों और तर्कों को देखते हुए, कई रीमेक से नए तरीके से आने का मूल रूप से एक ही कार्य कर सकते हैं ।
--all
ध्वज के साथ कई उपाय करने का एक तरीका है :
git fetch --all
यह आपके सभी कॉन्फ़िगर किए गए रीमेक से प्राप्त होगा, यह मानते हुए कि आपने remote.<name>.skipFetchAll
उनके लिए सेट नहीं किया है:
यदि सही है, तो यह रिमोट git-fetch (1) या git- रिमोट (1) के अपडेट उपकमांड का उपयोग करते समय डिफ़ॉल्ट रूप से छोड़ दिया जाएगा । - गिट-कॉन्फिग डॉक्यूमेंटेशन
यह उपयोग करने के बराबर होगा
git remote update
किसी भी दूरस्थ समूह को लाने के लिए निर्दिष्ट किए बिना, और remotes.default
आपके रेपो कॉन्फ़िगरेशन में सेट नहीं होने के बावजूद , और यह भी कि आपके किसी भी रिमूव remote.<name>.skipDefaultUpdate
को सही नहीं बनाया गया है।
Git के विन्यास के लिए वर्तमान 1.8.3.2 प्रलेखन का उल्लेख नहीं करता remotes.default
सेटिंग है, लेकिन मैं इसके बारे में सर्वशक्तिमान गूगल से सलाह ली और से इस उपयोगी स्पष्टीकरण पाया Mislav Marohnić :
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
आप
remote update
कमांड द्वारा प्राप्त किए जाने वाले रीमोट्स की डिफ़ॉल्ट सूची को परिभाषित कर सकते हैं । ये आपके टीम के साथी, किसी ओपनसोर्स प्रोजेक्ट या इसी तरह के विश्वसनीय समुदाय के सदस्यों से प्राप्त किए जा सकते हैं।
तो शायद, अगर आपने remotes.default
सेट किया है, और आपके सभी रिमोट इसमें सूचीबद्ध git remote update
नहीं हैं , तो सभी रीमेक नहीं लाएंगे कि आपका रेपो "जागरूक" है।
के रूप में remote.<name>.skipDefaultUpdate
स्थापना, Git डॉक्स यह thusly व्याख्या करते हैं:
यदि सही है, तो यह रिमोट git-fetch (1) या git- रिमोट (1) के अपडेट उपकमांड का उपयोग करते समय डिफ़ॉल्ट रूप से छोड़ दिया जाएगा ।
सभी रिमोट प्राप्त करने में कठिनाई के बजाय, दोनों fetch
और remote update
आप एक से अधिक रिमोट और रिमोट लाने के लिए के समूह निर्दिष्ट करने के लिए अनुमति देते हैं:
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch [<options>] <group>
आपको कई रिमूव लाने की अनुमति देता है जो एक समूह का हिस्सा हैं ( मिस्लाव से एक और उदाहरण उधार लेने के लिए ):
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git fetch --multiple
आपको कई रिपॉजिटरी और रिपोजिटरी समूहों को एक बार ( डॉक्स से ) लाने की अनुमति देता है :
कई
<repository>
और<group>
तर्कों को निर्दिष्ट करने की अनुमति दें ।<refspec>s
निर्दिष्ट नहीं किया जा सकता है।
git remote update
प्रलेखन में अस्पष्टता
के लिए सारgit remote update
निर्दिष्ट कमांड वाक्य रचना इस प्रकार है कि:
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
अंतिम भाग पर ध्यान दें, [(<group> | <remote>)…]
? अनुगामी डॉट्स का ...
अर्थ है कि आप कई समूहों को निर्दिष्ट कर सकते हैं और कमांड के साथ रिमॉट कर सकते हैं, जिसका अर्थ है कि यह उसी तरह से व्यवहार करेगा जैसे git fetch --multiple
... देखें कि दोनों के बीच का सिंटैक्स समान कैसे है?
हालाँकि, एक ही दस्तावेज़ में, update
कमांड के लिए स्पष्टीकरण कई समूह और दूरस्थ तर्कों को निर्दिष्ट करने के बारे में कुछ नहीं कहता है, केवल यह
के रूप में परिभाषित द्वारा भंडार में एक नामित सेट के लिए अपडेट [एस] लायें
remotes.<group>
।
यह स्पष्ट नहीं है कि अगर कई व्यक्तिगत रीमोट और कई दूरस्थ समूहों को निर्दिष्ट git remote update
करने git fetch --multiple
के संबंध में पहचान के साथ काम करता है ।
अंत में, हर कोई एक ही रिमोट लाने का सरल मामला जानता है:
git fetch <remote>
यह मामला हो सकता है कि आप भी उपयोग कर सकते हैं
git remote update <remote>
एक ही काम करने के लिए, लेकिन जैसा कि मैंने पिछले अनुभाग में उल्लेख किया है, इस git remote update
बारे में अस्पष्ट है कि क्या कमांड के साथ एकल समूह के अलावा कुछ भी प्राप्त करना संभव है ।
जैसा कि मैंने समझाया है, git fetch
और git remote update
कई रीमेक से प्राप्त करने के संबंध में समान व्यवहार करता हूं । वे समान वाक्यविन्यास और तर्क साझा करते हैं, हालांकि git fetch
कम है, इसलिए लोग संभवतः टाइप करना और उपयोग करना आसान समझते हैं।
यह ऐसा मामला हो सकता git remote update
है जिसका उपयोग केवल एक रिमोट की तरह करने के लिए नहीं किया जा सकता है git fetch
, लेकिन जैसा कि मैंने बताया है, प्रलेखन यह स्पष्ट नहीं करता है।
अलग
Git चीनी मिट्टी के बरतन आदेश, द्वारा उदाहरण के बीच कार्यक्षमता में दोहराव git fetch
और git remote update
इसके बाद के संस्करण, अद्वितीय नहीं है। मैंने इसी तरह की स्थिति पर ध्यान दिया है git rebase --onto
और इसमें git cherry-pick
, दोनों एक नए बेस कमिट पर पैच करने के लिए कई प्रकार के कमिट ले सकते हैं।
मेरा अनुमान है कि जैसे-जैसे गित वर्षों में विकसित हुई है, कुछ कार्यक्षमता (अनिवार्य रूप से?) दोहराई गई, शायद कभी-कभी एंड-यूज़र्स के लिए एक सुविधा के रूप में (उदाहरण के लिए, एक सीमा से cherry-pick
अधिक, एक से अधिक प्रतिबद्ध पास करने की तुलना में यह आसान है। एक सीमा लेने के लिए)। जाहिरा तौर पर cherry-pick
हमेशा हिट की एक सीमा को स्वीकार नहीं किया, जैसा कि v1.7.2 रिलीज नोट्स में बताया गया है :
git cherry-pick
कई प्रकार के कमिट (जैसेcherry-pick A..B
औरcherry-pick --stdin
) लेने के लिए सीखा , ऐसा कियाgit revert
;rebase [-i]
हालांकि, नेक्सस अनुक्रमण नियंत्रण का समर्थन नहीं करता है ।
हां और ना। git remote update
केवल एक ही नहीं, सभी रीमोट से प्राप्त होते हैं।
कोड को देखने के बिना यह देखने के लिए कि क्या remote update
यह केवल एक शेल स्क्रिप्ट (संभव) है, मूल रूप से, प्रत्येक रिमोट के लिए चलता है। git fetch
बहुत अधिक दानेदार हो सकता है।
git remote update
, गिट-रिमोट मैनपेज देखें।
git remote
एक शेल स्क्रिप्ट नहीं है, लेकिन यह git fetch
एक के दौरान पैदा होता है remote update
।
git fetch
लिए एक समान आदेश विकल्प है git remote update
?
git fetch --all
git rebase
पसंद हैmv
औरgit cherry-pick
पसंद हैcp
।--onto
स्विच है कि नहीं बदलता है।git rebase
यदि आप SHA1 मान निर्दिष्ट करते हैं, तो आप केवल एक कॉपी-प्रभाव प्राप्त कर सकते हैं , अन्यथा आपकी शाखा स्थानांतरित हो जाएगी!