2010-10-22 12 views
114

एक गिट भंडार में, एक दूरस्थ शाखा जिसे मैं ट्रैक नहीं कर रहा था हटा दिया गया था। जब मैं टाइपगिट: रिमोट शाखा की जानकारी अपडेट करना

git branch -r 

नष्ट कर दिया शाखा अभी भी दिखाई देता है (और मैं इसे बाहर की जाँच कर सकते हैं)

क्या Git आदेश मैं इस जानकारी को अद्यतन करने के चलाने के लिए है?

उत्तर

35

आप की तरह

git branch -d -r remote_name/branch_name 

कुछ करते हैं तो आप केवल अपने स्थानीय चेकआउट को हटा दें। यह आदेश दूरस्थ भंडार में कुछ भी नहीं करता है, यही कारण है कि यह अभी भी दिखाई देता है।

समाधान:

git push origin :branch_name 

निकाल देंगे दूरस्थ शाखा (ध्यान दें ':'), और

git branch -d branch_name 

अपने स्थानीय चेकआउट निकाल देंगे।

(Reference)

+131

आप अपने रिमोट संदर्भों को साफ़ करने के लिए 'गिट रिमोट प्रिंस उत्पत्ति' भी चला सकते हैं। – cmcginty

+3

वह उन सभी शाखाओं को हटा देगा जो अब दूरस्थ भंडार द्वारा ट्रैक नहीं किए गए हैं। तो, बस सावधान रहें। –

+4

मुझे लगता है कि यह जानना भी उपयोगी है कि, हालांकि थोड़ा और वर्बोज़, आप रिमोट शाखाओं को हटाने के लिए 'गिट पुश --delete ' का उपयोग कर सकते हैं। – AeroCross

2

आप दूरस्थ शाखाओं को हटाने के लिए -r और -d झंडे को जोड़ सकते हैं।

+0

महान टिप! हालांकि, इस मामले में, ऐसी कई शाखाएं हैं जो पहले ही हटा दी गई हैं, निश्चित रूप से इन अद्यतनों को लाने के लिए एक आदेश है –

263

यदि यह दूरस्थ भंडार में शाखाओं कि हटा दिया गया थे, और आप एक बार में सभी स्थानीय रिमोट ट्रैकिंग शाखाओं अद्यतन करने के लिए आप उपयोग कर सकते हैं चाहते हैं,

$ git remote prune <remotename> 

किसी दिए गए रिमोट के लिए सभी पुरानी रिमोट-ट्रैकिंग शाखाओं को हटाने के लिए (यानी वे जो शाखाओं का पालन करते हैं जिन्हें रिमोट रिपोजिटरी में हटा दिया गया था)।

git remote दस्तावेज़ीकरण देखें।

+0

आपके उत्तर के लिए @Casey और @Jakub धन्यवाद! यह कैसे आता है कि अगली बार जब मैं 'गिट fetch' का उपयोग करता हूं तो स्थानीय रूप से संग्रहीत दूरस्थ शाखा की जानकारी अपडेट नहीं की जाती है? – JJD

+3

@JJD: क्योंकि आपने रिमोट शाखा पर अपना काम किया हो सकता है जो अब यहां नहीं है। यह अनुरोध किए बिना गायब हो गया था इसलिए एक बुरा विचार माना जाता था। यही कारण है कि आपको रिमोट-ट्रैकिंग शाखाओं को स्पष्ट रूप से छीनने की आवश्यकता है। –

+0

क्या "गिट जीसी" स्टेल रिमोट शाखाओं को भी साफ करता है? –

163
git remote update --prune 

सभी रिमोट शाखाओं को ताज़ा करना चाहिए, नए जोड़ना और हटाए गए लोगों को हटाना चाहिए।

संपादित करें: remote update आदेश मूल रूप से रिमोट पर शाखाओं की सूची प्राप्त करता है। --prune विकल्प आपके स्थानीय दूरस्थ ट्रैकिंग शाखाओं से छुटकारा पायेगा जो दूरस्थ पर मौजूद शाखाओं को इंगित करता है।

+0

यह मेरे लिए काम किया। मुझे एक दूरस्थ शाखा को हटाने की आवश्यकता थी कि किसी कारण से सामान्य 'गिट पुश उत्पत्ति: ' – n0denine

+0

द्वारा हटाया नहीं जा सका, क्या यह कहना सही होगा कि यह जवाब जैकब नारबेब्स्की का उत्तर क्या करता है और अधिक? यही है, यह prunes _and_ यह अद्यतन लाता है? –

2

नई दूरस्थ शाखाओं को देखने के लिए इस आदेश

git gc --prune=now 
13

इसके अलावा उपयोगी का प्रयास करें:

git fetch --all 
+0

इससे मुझे बहुत मदद मिली। विजुअल स्टूडियो गिट में कुछ बग क्लोनिंग के बाद बनाए गए नई शाखाओं को दिखाता है। यह आदेश नई शाखाओं को दिखाने में मदद करता है –

+0

अच्छा एन सरल thx दोस्त, घर पर कांस्य जवाब बैज है :) – danday74

संबंधित मुद्दे