2013-07-29 7 views
61

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

git checkout के लिए मैं टैब-ऑटोकॉम्प्लेट से myBranch नाम कैसे हटा सकता हूं?

+7

क्या गिट शाखा-ए' अभी भी 'मायब्रैंच' या 'मूल/मेरा ब्रंच' सूचीबद्ध है? ध्यान दें, भले ही 'मायब्रैंच' मौजूद न हो, फिर भी 'गिट चेकआउट मायब्रैंच' अभी भी 'गिट चेकआउट -बी माय ब्रंच मूल/मायब्रैंच 'के लिए वैध शॉर्टकट है, यदि मूल/मेरा ब्रंच' मौजूद है। – twalberg

+1

@twalberg उत्तर के रूप में पोस्ट करने लायक है। – cmbuckley

उत्तर

41

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

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

+0

धन्यवाद! ऐसा लगता है कि अपराधी है। 'मूल/mybranch' अभी भी मौजूद है। अगर मैंने गिथब (ऑनलाइन इंटरफेस के माध्यम से) पर 'मायब्रैंच' शाखा हटा दी है, तो क्या यह रिमोट शाखा को हटाने के लिए 'गिट शाखा-मूल/मेरी ब्रंच' को कॉल करना सुरक्षित है? –

+52

@ जॉन हॉफमैन यह सुरक्षित होना चाहिए, लेकिन मुझे लगता है कि बेहतर तरीका 'गिट फ़ेच --प्रून मूल' होगा। इससे सभी स्थानीय ट्रैकिंग शाखाएं साफ हो जाएंगी जो रिमोट पर मौजूद नहीं हैं। – twalberg

+0

धन्यवाद! वह काम किया! –

0

शायद यह ऐसा करने के लिए गिट नहीं है, यह आपके खोल को समाप्त करने के बाद से कमांड को खत्म कर रहा है।

आप history टाइप करके या ~/.bash_history संपादित करके अपने इतिहास को देख सकते हैं। आप ~/.bash_history फ़ाइल से अपना इतिहास संपादित कर सकते हैं, या आप history टाइप कर सकते हैं, फिर git checkout myBranch के साथ लाइन नंबर प्राप्त करें, फिर history -d {line number here} का उपयोग करें। अंतिम उपाय के रूप में, आप history -c कमांड का इतिहास पूरी तरह से निंदा करने के लिए उपयोग कर सकते हैं।

+2

नहीं, यह एक बाश इतिहास की बात नहीं है। यह [गिट स्वतः पूर्ण] है (http://apple.stackexchange.com/questions/55875/git-auto-complete-for-branches-at-the-command-line)। एक अलग लेकिन बहुत उपयोगी उपकरण। – Arjan

+0

@ अरजन वाह, यह नहीं पता था कि उसने ऐसा किया था। मान लीजिए कि मैंने माना कि टैब बस काम नहीं करेगा और कभी कोशिश नहीं करेगा। धन्यवाद! –

+0

फिर लिनक्स स्वयं कुछ लिखता है, आप शर्त लगाते हैं कि यह स्वत: पूर्ण के साथ आया: 3 – ThorSummoner

68

git fetch --prune --all

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

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

+7

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

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