Git: दूरस्थ शाखा जानकारी अपडेट करना


125

जीआईटी रिपॉजिटरी में, मैं जिस रिमोट ब्रांच पर नज़र नहीं रख रहा हूं, उसे हटा दिया गया था। जब मैं टाइप करता हूँ

git branch -r

हटाई गई शाखा अभी भी दिखाई देती है (और मैं इसे देख सकता हूं)

इस जानकारी को अपडेट करने के लिए मुझे कौन सी git कमांड देनी होगी?

जवाबों:


39

अगर आप कुछ ऐसा प्रदर्शन करते हैं

git branch -d -r remote_name/branch_name

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

उपाय:

git push origin :branch_name

दूरस्थ शाखा को हटा देगा (':' पर ​​ध्यान दें), और

git branch -d branch_name

आपके स्थानीय चेकआउट को हटा देगा।

( संदर्भ )


146
आप अपने दूरस्थ संदर्भों को साफ-सुथरा करने के लिए 'git Remote prune origin' भी चला सकते हैं।
cmcginty

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

4
मुझे लगता है कि यह जानना भी उपयोगी है, हालांकि थोड़ी अधिक क्रिया, आप git push <remote> --delete <branchname>दूरस्थ शाखाओं को हटाने के लिए भी उपयोग कर सकते हैं ।
एयरोक्रॉस

यह आमतौर पर काम करता है, लेकिन मैं आज एक ऐसी स्थिति में कैम करता हूं जहां दूरस्थ सूची अपडेट नहीं की गई थी, इसलिए मैं उस शाखा को हटाने की कोशिश कर रहा था जो वहां नहीं थी। इस प्रकार नीचे दिए गए #Flo के समाधान की आवश्यकता पहले थी।
dgo

284

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

$ git remote prune <remotename>

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

git remoteप्रलेखन देखें ।


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

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

क्या "git gc" बासी दूरस्थ शाखाओं को भी साफ करता है?
जेम्स वाल्ड

@ जेम्सवेल्ड: नहीं, यह नहीं है। git gcसिर्फ वस्तुओं और रेफ को पैक करता है, और उस पर (कुछ सुरक्षा मार्जिन के साथ) अप्रतिबंधित वस्तुओं को हटाता है।
याकूब नारबस्की

186
git remote update --prune

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

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


इसने मेरे लिए काम किया। मुझे एक दूरस्थ शाखा को हटाने की आवश्यकता थी जो किसी कारण से सामान्य 'git पुश ओरिजिन: <शाखा_name>'
n0denine

क्या यह कहना सही होगा कि यह जवाब जकुब नारबस्की का जवाब और क्या करता है? यही है, यह prunes और यह अपडेट प्राप्त करता है?
फ्रैंक टैन

14

नई दूरस्थ शाखाओं को देखने के लिए भी उपयोगी:

git fetch --all

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

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

2

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


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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.