git जनक गिट से पुरानी दूरदराज के शाखाएं निकालें




विज्ञान की शाखाओं के जनक (4)

जब मैं गिट में स्वस्थापना का उपयोग करता हूं, तो मुझे पुराने रीमोट्स की शाखाएं दिखाती रहती हैं जिनके पास मेरे पास अब और नहीं है। जब मैं एक git branch -la करता हूँ तो यह उन पुराने रिमोट और शाखाओं को दिखाता है, जबकि एक git branch -l नहीं होगा। एक ls .git/refs/remotes/ उन्हें भी दिखाता है हालांकि, वे मेरे .git / config में मौजूद नहीं हैं और न ही वे दिखाए जाते हैं जब मैं git remote show चलाता हूं।

तो मैं उनमें से कैसे छुटकारा पाता हूं क्योंकि मेरी स्वत: पूर्ण सूची अभी बहुत लंबा है

मैंने पहले ही कोशिश की है:

git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote

मैं इस तथ्य से भी अवगत हूं कि मैं रेपो को पुन: क्लोन कर सकता हूं लेकिन यह सिर्फ धोखाधड़ी है ;-)


अगर रिमोट रेपॉजिटरी में शाखा को हटा दिया गया था तो गिट (स्थानीय) रिमोट-ट्रैकिंग शाखाओं को स्वचालित रूप से नष्ट नहीं करता है। इसके अतिरिक्त, V2.0.1 रिमोट-ट्रैकिंग शाखाओं से पहले जब आपके रिमोट को अपने जीआईटी कॉन्फ़िग (VonC के उत्तर देखें) से निकाल दिया जाता है तो कुछ मामलों में नहीं हटाया गया था।

अपने रिमोट रिज़ॉजिटरी में से किसी एक के लिए, दूरस्थ दूरस्थ-ट्रैकिंग शाखाओं (शाखाएं जो दूरस्थ रिपॉजिटरी में हटाई गई थी) को हटाने के लिए

git remote prune <remote>

मैन पेज या git remote को उद्धृत करने के लिए:

छटना

<Name> के अंतर्गत सभी शैक्षणिक ट्रैकिंग शाखाओं को हटा देता है ये बासी शाखाएं <name> से संदर्भित दूरस्थ रिपाईटरी से पहले ही हटा दी गई हैं, लेकिन अभी भी "remotes / <name>" में स्थानीय रूप से उपलब्ध हैं।

- ड्रा-रन विकल्प के साथ, रिपोर्ट करें कि किन शाखाओं को छाँट दिया जाएगा, लेकिन वास्तव में उन्हें छांट नहींें।

हालांकि, आपके प्रश्न से ऐसा लगता है कि मैन्युअल रूप से निकाली गई। Git .git/refs/remotes/theoldremote , इसलिए गिट अब दूरस्थ रिपॉजिटरी के बारे में नहीं जानता है कि रिमोट-ट्रैकिंग शाखाओं का क्या था ऐसा नहीं है कि आप इसे कैसे करना चाहिए।

एक दूरस्थ रिपॉजिटरी को निकालने का सामान्य तरीका चलाना है

git remote rm <remote>

यह आपके .git/config से रिमोट को निकाल देगा और दूरस्थ-ट्रैकिंग शाखाओं को हटा देगा।

यदि आप .git/refs/remotes/ अंतर्गत निर्देशिका को हटाते हैं, तो शाखाएं पीछे रहेंगी। तो आपको उन्हें मैन्युअल रूप से निकालना होगा:

git branch -rd <remote>/<branchname>

आपको दूरस्थ शाखा को हटाने के लिए विकल्प -r की आवश्यकता होती है।


ठीक है, मुझे ये मिल गया है। समस्या यह थी कि रिमोट अब मौजूद नहीं हैं, लेकिन वे कहीं भी git डेटाबेस में करते हैं मैंने रीमोट्स को फिर से जोड़ा, फिर किया

git remote prune theremote
git remote rm theremote
git gc --prune=now

इसके बाद वे सूची से गायब हो गए। किसी भी तरह मैंने उन्हें ठीक से पहले ही नहीं निकाला था।


नोट: जबकि git रिमोट रिबन का जवाब है, पता है कि, git 2.0.1 (जून 25, 2014) के साथ शुरू हो रहा है, रिमोट ट्रैकिंग शाखाओं को निकालने से एक git remote rm प्रारंभ होता है
तो उम्मीद है, एक git remote rm बाद पुरानी शाखाओं को साफ करने के लिए नहीं होना चाहिए।

जेन्ड्स लिंडस्ट्रम ( jensl ) द्वारा b07bdd3 देखें

remote rm : पिछले के रूप में दूरस्थ कॉन्फ़िगरेशन को हटा दें

दूरस्थ रिमोट को दूर करते समय, रिमोट कॉन्फ़िगरेशन को हटाने से पहले दूरस्थ-ट्रैकिंग शाखाएं हटा दें।
इस तरह, अगर रिमोट-ट्रैकिंग शाखाओं को हटाने में ऑपरेशन विफल रहता है या निरस्त हो जाता है, तो ऑपरेशन को पूरा करने के लिए कमांड फिर से चलाया जा सकता है


किसी शाखा को इसे हटाने के लिए कुछ भी नहीं दबाएं:

git push remote :remote_branch

यह कहीं डॉक्स में है लेकिन यह वास्तव में स्पष्ट नहीं है।

या मैंने आपके सवाल को गलत समझा?





git