जब मैं करता हूं git fetch originऔर मूल में एक डिलीट की गई शाखा होती है, तो यह मेरी रिपॉजिटरी में इसे अपडेट नहीं करता है। जब मैं ऐसा git branch -rकरता हूं तब भी पता चलता है origin/DELETED_BRANCH।
मैं इसे कैसे ठीक करूं?
जब मैं करता हूं git fetch originऔर मूल में एक डिलीट की गई शाखा होती है, तो यह मेरी रिपॉजिटरी में इसे अपडेट नहीं करता है। जब मैं ऐसा git branch -rकरता हूं तब भी पता चलता है origin/DELETED_BRANCH।
मैं इसे कैसे ठीक करूं?
जवाबों:
आपको निम्नलिखित करने की आवश्यकता है
git fetch -p
यह दूरस्थ शाखाओं के स्थानीय डेटाबेस को अपडेट करेगा।
originकांटे में एक गैर-मौजूद दूरस्थ शाखा के लिए काम किया : git fetch -p origin जब मैंने तब git branch -r गैर-मौजूद दूरस्थ शाखा को दिखाया नहीं था।
git remote prune originसमान और समान होना चाहिए । git pull --prune
[deleted] (none) -> origin/ < branch name >और शाखा को अभी भी स्थानीय रेपो पर दिखाया गया है क्यों?
git branchअभी भी उन शाखाओं का पता चलता है जिन्हें माना जाता है कि हटा दिया गया था।
से http://www.gitguys.com/topics/adding-and-removing-remote-branches/
जब कोई दूरस्थ रिपॉजिटरी से किसी शाखा को हटाता है, तो जब उपयोगकर्ता किसी उपयोगकर्ता को git पुल या git लाने पर स्थानीय रिपॉजिटरी शाखाओं को स्वचालित रूप से नहीं हटाएगा। हालाँकि, यदि उपयोगकर्ता अपनी स्थानीय रिपॉजिटरी से सभी ट्रैकिंग शाखाओं को हटाना चाहते हैं, जिन्हें दूरस्थ रिपॉजिटरी में हटा दिया गया है, तो वे टाइप कर सकते हैं:
git दूरस्थ prune मूल
एक नोट के रूप में, the -p param का git fetch -pवास्तव में अर्थ है "प्रून"।
किसी भी तरह से आपने चुना, गैर-मौजूदा दूरस्थ शाखाएं आपके स्थानीय भंडार से हटा दी जाएंगी।
आपको निम्नलिखित करने की आवश्यकता है
git fetch -p
अपनी शाखा सूची को सिंक्रनाइज़ करने के लिए। Git मैनुअल का कहना है
-p,--prune
लाने के बाद, किसी भी दूरस्थ-ट्रैकिंग संदर्भ को हटा दें जो अब रिमोट पर मौजूद नहीं है। टैग प्रूनिंग के अधीन नहीं हैं यदि वे केवल डिफ़ॉल्ट टैग ऑटो-अनुसरण के कारण या किसी--tagsविकल्प के कारण प्राप्त किए जाते हैं । हालांकि, अगर टैग स्पष्ट रीस्पेक (या तो कमांड लाइन पर या दूरस्थ कॉन्फ़िगरेशन में, उदाहरण के लिए यदि रिमोट--mirrorविकल्प के साथ क्लोन किया गया था ) के कारण लाया जाता है , तो वे भी प्रूनिंग के अधीन हैं।
मैं व्यक्तिगत रूप से उपयोग करना पसंद करता हूं git fetch origin -p --progressक्योंकि यह एक प्रगति संकेतक दिखाता है।
git fetch -pइसके बारे में , Git 1.9 में इसका व्यवहार बदल गया है, और केवल Git 2.9.x / 2.10 यह दर्शाता है।
जेफ किंग ( ) द्वारा 9e70233 (13 जून 2016) प्रतिबद्ध देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 1c22105 , 06 जुला 2016)peff
gitster
fetch: दस्तावेज़ जो कि प्रूनिंग लाने से पहले होता हैइसे 10a6cc8 में बदल दिया गया था
fetch --prune: ( 2014-01-02 लाने से पहले भागो भागो), लेकिन ऐसा लगता है कि उस चर्चा में किसी को भी एहसास नहीं हुआ कि हम "बाद" स्पष्ट रूप से विज्ञापन कर रहे थे।
इसलिए प्रलेखन अब बताता है:
लाने से पहले , किसी भी रिमोट-ट्रैकिंग संदर्भ को हटा दें जो अब रिमोट पर मौजूद नहीं है
वह है क्योंकि:
जब हमारे पास एक दूरस्थ-ट्रैकिंग शाखा होती है, जिसका नाम "
frotz/nitfol" पिछले भ्रूण से होता है, और अपस्ट्रीम में अब "frotz" नाम की एक शाखा होती है , तो भ्रूणfrotz/nitfol"git fetch --prune" को अपस्ट्रीम से " " हटाने में विफल होगा । gitgit remote pruneसमस्या को ठीक करने के लिए उपयोगकर्ता को " " प्रयोग करने के लिए सूचित करेगा ।जिस तरह से "
fetch --prune" काम करता है, वह प्रचलित ऑपरेशन को आगे बढ़ाने से पहले करें। इस तरह, एक संघर्ष के उपयोगकर्ता को चेतावनी देने के बजाय, यह स्वचालित रूप से इसे ठीक करता है।