संक्षिप्त उत्तर
जब तक आप एक तेजी से आगे मर्ज कर रहे हैं , तब तक आप बस उपयोग कर सकते हैं
git fetch <remote> <sourceBranch>:<destinationBranch>
उदाहरण:
# Merge local branch foo into local branch master,
# without having to checkout master first.
# Here `.` means to use the local repository as the "remote":
git fetch . foo:master
# Merge remote branch origin/foo into local branch foo,
# without having to checkout foo first:
git fetch origin foo:foo
जबकि एम्बर का जवाब फास्ट-फॉरवर्ड मामलों में भी काम करेगा, git fetchइसके बजाय ब्रांच-रेफ़रेंस को बलपूर्वक स्थानांतरित करने की तुलना में थोड़ा सुरक्षित है, क्योंकि git fetchस्वचालित रूप से जब तक आप उपयोग नहीं करते तब तक आकस्मिक गैर-फास्ट-फॉरवर्ड को रोक दिया जाएगा +। refspec।
दीर्घ उत्तर
यदि आप गैर-फास्ट-फ़ॉरवर्ड-मर्ज में परिणाम होंगे, तो आप पहले A की जाँच के बिना एक शाखा B को शाखा A में विलय नहीं कर सकते। ऐसा इसलिए है क्योंकि किसी भी संभावित संघर्ष को हल करने के लिए एक कार्यशील प्रतिलिपि की आवश्यकता होती है।
हालांकि, फास्ट-फॉरवर्ड मर्ज के मामले में, यह संभव है , क्योंकि इस तरह के मर्ज का परिणाम कभी भी संघर्ष में नहीं हो सकता है। पहले एक शाखा की जांच के बिना ऐसा करने के लिए, आप git fetchएक रीस्पेक के साथ उपयोग कर सकते हैं ।
masterयदि आपके पास एक और शाखा featureहै, तो अपडेट करने का एक उदाहरण है (गैर-तेज़-फ़ॉरवर्ड परिवर्तन को रोकना)।
git fetch upstream master:master
यह उपयोग-मामला इतना सामान्य है, कि आप शायद अपनी git कॉन्फ़िगरेशन फ़ाइल में इसके लिए एक उपनाम बनाना चाहेंगे, जैसे यह:
[alias]
sync = !sh -c 'git checkout --quiet HEAD; git fetch upstream master:master; git checkout --quiet -'
यह उपनाम क्या करता है:
git checkout HEAD: यह आपकी वर्किंग कॉपी को अलग-अलग स्थिति में रखता है। यह उपयोगी है यदि आप अद्यतन करना चाहते हैं masterजबकि आप इसे चेक-आउट करना चाहते हैं। मुझे लगता है कि ऐसा करना आवश्यक था क्योंकि अन्यथा के लिए शाखा संदर्भ masterनहीं चलेगा, लेकिन मुझे याद नहीं है कि यह वास्तव में मेरे सिर के ठीक ऊपर-ऊपर है।
git fetch upstream master:master: यह फास्ट-फॉरवर्ड आपके स्थानीय masterके रूप में उसी स्थान पर है upstream/master।
git checkout -अपनी पहले से चेक-आउट शाखा की जाँच करता है (कि -इस मामले में क्या करता है)।
git fetch(गैर-) फास्ट-फ़ॉरवर्ड मर्ज का सिंटैक्स
यदि आप चाहते हैं कि fetchयदि अपडेट नॉन-फास्ट-फारवर्ड हो तो कमांड फेल हो जाए, तो आप बस फॉर्म के रीस्पेक का उपयोग करें
git fetch <remote> <remoteBranch>:<localBranch>
यदि आप गैर-फास्ट-फॉरवर्ड अपडेट की अनुमति देना चाहते हैं, तो आप +रिफस्पेक के सामने एक जोड़ दें:
git fetch <remote> +<remoteBranch>:<localBranch>
ध्यान दें कि आप अपने स्थानीय रेपो को "रिमोट" पैरामीटर का उपयोग करके पास कर सकते हैं .:
git fetch . <sourceBranch>:<destinationBranch>
दस्तावेज़ीकरण
git fetchइस सिंटैक्स की व्याख्या करने वाले प्रलेखन से (जोर मेरा):
<refspec>
एक <refspec>पैरामीटर का प्रारूप एक वैकल्पिक प्लस है +, इसके बाद स्रोत रेफ <src>, एक कोलन द्वारा पीछा किया जाता है :, उसके बाद गंतव्य रेफरी <dst>।
जो रिमोट रेफरी मैच करता <src>है, वह लाया जाता है, और यदि <dst>खाली स्ट्रिंग नहीं है, तो स्थानीय मिलान जो इसे मेल खाता है, तेजी से अग्रेषित करता है<src> । यदि वैकल्पिक प्लस+का उपयोग किया जाता है, तो स्थानीय रेफरी को अपडेट किया जाता है, भले ही यह फास्ट-फॉरवर्ड अपडेट में न हो।
यह सभी देखें
काम के पेड़ को छूने के बिना चेकआउट और मर्ज करें
कार्य निर्देशिका को बदले बिना विलय करना