मैं स्वतः पूर्ण से हटाए गए शाखा नामों को कैसे हटाऊं?


120

मैं git branch -d myBranchएक शाखा को हटाता था। हालांकि, जब मैं मास्टर पर हूँ और साथ एक नई शाखा चेकआउट करने की कोशिश git checkout, myBranchअभी भी टैब-स्वत: पूर्ण में प्रकट होता है।

मैं myBranchटैब-स्वतः पूर्ण से नाम कैसे निकालूं git checkout?


10
क्या git branch -aअभी भी सूची या तो myBranchया origin/myBranch? ध्यान दें कि, भले ही myBranchमौजूद नहीं है, git checkout myBranchअभी भी के लिए एक वैध शॉर्टकट है git checkout -b myBranch origin/myBranchअगर origin/myBranchमौजूद है।
Twalberg

2
@twalberg एक जवाब के रूप में पोस्ट करने लायक।
cumbuckley

जवाबों:


81

इसका एक संभावित कारण यह है कि, यदि एक दूरस्थ शाखा (जैसे origin/myBranch) अभी भी मौजूद है, तो git checkout myBranchइसके विकल्प के रूप में सफल होगी git checkout -b myBranch origin/myBranch। यह पहली बार किसी दूरस्थ शाखा को चेकआउट करने के सामान्य मामले के लिए एक सुविधा के रूप में जाना जाता है, जिससे एक स्थानीय रूप से नामित ट्रैकिंग शाखा बनाई जा सके।

अन्य संभावनाएं भी हैं, जो इस बात पर निर्भर करती है कि आप वास्तव में पूर्णता के लिए क्या उपयोग कर रहे हैं, लेकिन यह पहली चीजों में से एक है जिसे मैं जांचूंगा। यदि आप चलाते हैं git branch -a, और एक origin/myBranchसूचीबद्ध है (या originआपके अलावा किसी दूरस्थ के लिए , यदि आपके पास ऐसा है), तो यह एक संभावित अपराधी है।


2
धन्यवाद! जो अपराधी लगता है। origin/myBranchअभी भी मौजूद है। अगर मैंने myBranchगिथब (ऑनलाइन इंटरफ़ेस के माध्यम से) पर शाखा को हटा दिया , तो क्या मेरे लिए git branch -d origin/myBranchउस दूरस्थ शाखा को हटाने के लिए कॉल करना सुरक्षित है ?
जॉन हॉफमैन

99
@ जॉनहोफमैन यह सुरक्षित होना चाहिए, लेकिन मुझे लगता है कि बेहतर तरीका होगा git fetch --prune origin। यह सभी स्थानीय ट्रैकिंग शाखाओं को साफ कर देगा जो अब रिमोट पर मौजूद नहीं हैं।
ट्वायबर्गबर्ग जूल 30'13

3
@twalberg मुझे विश्वास नहीं है कि स्थानीय और दूरस्थ शाखा को हटाना स्वतः पूर्ण में पुरानी शाखाओं से छुटकारा पाने के लिए पर्याप्त है। मैं आपको लगता है कि जरूरत के लिए git fetch --prune originस्वत: पूर्ण में दूर जाने के लिए दूरदराज के शाखाओं को स्थानीय संदर्भ के लिए। हो सकता है कि टिप्पणी से उत्तर की ओर बढ़ना अच्छा हो। किसी भी मामले में आपकी प्रतिक्रिया के लिए धन्यवाद क्योंकि इसने मेरी मदद की!
टिम्मिल

4
git branch -aमुझे सही रास्ते पर ले गए; मेरे सहकर्मी ने git fetch --prune --allसभी रीमोट से सभी मृत शाखाओं को चुभाने का सुझाव दिया , जो बहुत सारे कांटों के साथ बहुत सारे देवों के साथ काम करते समय उपयोगी है।
एरिकोस्को

173

git fetch --prune --all

इसे एक लाइन-फिक्स के बाद से अपने स्वयं के उत्तर के रूप में पोस्ट किया जा रहा है, लेकिन यदि आप मतदान करते हैं तो ऊपर दिए गए @ ट्वालबर्ग के उत्तर के लिए वोट करना सुनिश्चित करें।

@ ट्वालबर्ग का सुझाव git branch -aमुझे सही रास्ते पर ले जाने के लिए; मेरे सहकर्मी ने git fetch --prune --allसभी रीमोट से सभी मृत शाखाओं को चुभाने का सुझाव दिया , जो बहुत सारे कांटों के साथ बहुत सारे देवों के साथ काम करते समय उपयोगी है।


19
जबकि स्वीकृत उत्तर एक अच्छा स्पष्टीकरण देता है कि ऐसा क्यों होता है, यह उत्तर समस्या का वास्तविक समाधान प्रस्तुत करता है और इसलिए इसे IMHO स्वीकार किया जाना चाहिए।
पैट्रिक ऑसिटी

3
मृत शाखाओं के नाम अभी भी स्वतः पूर्ण में दिखाई दे रहे हैं।
फित्सू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.