प्रस्तुत जानकारी के बीच git help fetch
, यह छोटी वस्तु है:
-p, --prune
After fetching, remove any remote-tracking branches which no longer exist on the remote.
तो, शायद, git fetch -p
आप क्या देख रहे हैं?
संपादित करें: ठीक है, इस तथ्य पर 3 साल बाद भी इस उत्तर पर बहस करने वालों के लिए, यहां इस बारे में थोड़ी अधिक जानकारी है कि मैंने यह उत्तर क्यों प्रस्तुत किया है ...
सबसे पहले, ओपी का कहना है कि वे "उन स्थानीय शाखाओं को भी हटाना चाहते हैं जो उन दूरस्थ शाखाओं से बनाई गई थीं [जो कि रिमोट पर नहीं हैं]"। में यह संभव नहीं है git
। यहाँ एक उदाहरण है।
मान लीजिए कि मेरे पास एक केंद्रीय सर्वर पर एक रेपो है, और इसकी दो शाखाएं हैं, जिन्हें बुलाया गया है A
और B
। अगर मैं उस रेपो को अपने स्थानीय सिस्टम में क्लोन करता हूं, तो मेरे क्लोन में स्थानीय रिफ (अभी तक वास्तविक शाखाएं नहीं) origin/A
और कहा जाएगा origin/B
। अब हम कहते हैं कि मैं निम्नलिखित कार्य करता हूं:
git checkout -b A origin/A
git checkout -b Z origin/B
git checkout -b C <some hash>
यहाँ प्रासंगिक तथ्य यह है कि मैंने किसी कारण से अपने स्थानीय रेपो पर एक शाखा बनाने के लिए चुना जिसका मूल से अलग नाम है, और मेरी एक स्थानीय शाखा भी है जो मूल रेपो पर मौजूद नहीं है (अभी तक)।
अब कहते हैं कि मैं रिमोट रेपो पर दोनों शाखाओं A
और B
शाखाओं को हटाता हूं और अपने स्थानीय रेपो ( git fetch
किसी रूप में) को अपडेट करता हूं , जिससे मेरे स्थानीय रीफ origin/A
और origin/B
गायब हो जाते हैं। अब, अपने स्थानीय रेपो तीन शाखाओं अभी भी है A
, Z
और C
। रिमोट रेपो पर इनमें से किसी की भी कोई शाखा नहीं है। उनमें से दो को "दूरस्थ शाखाओं से बनाया गया था", लेकिन यहां तक कि अगर मुझे पता है कि B
मूल पर एक शाखा हुआ करती थी, तो मेरे पास यह जानने का कोई तरीका नहीं है कि Z
किससे बनाया गया थाB
, क्योंकि इस प्रक्रिया में इसका नाम बदल दिया गया था, शायद एक अच्छे कारण के लिए। तो, वास्तव में, कुछ बाहरी प्रक्रिया रिकॉर्डिंग शाखा मूल मेटाडाटा के बिना, या एक मानव जो इतिहास जानता है, यह बताना असंभव है कि ओपी को हटाने के लिए तीन शाखाओं में से कौन सी, यदि कोई है। कुछ बाहरी जानकारी के बिना जो git
आपके लिए स्वचालित रूप से बनाए नहीं रखती है, git fetch -p
लगभग उतनी ही करीब है जितनी आप प्राप्त कर सकते हैं, और ओपी ने जो भी पूछा है उसके लिए कोई भी स्वचालित विधि, या तो बहुत से शाखाओं को हटाने का जोखिम उठाती है, या कुछ को गायब कर देती है जो ओपी अन्यथा नहीं होगा हटाना चाहते हैं।
अन्य परिदृश्य भी हैं, जैसे कि अगर मैं origin/A
किसी चीज़ के लिए तीन अलग-अलग तरीकों का परीक्षण करने के लिए तीन अलग-अलग शाखाएँ बनाता हूं , और फिर origin/A
चला जाता है। अब मेरी तीन शाखाएँ हैं, जो स्पष्ट रूप से सभी नाम-वार से मेल नहीं खा सकती हैं, लेकिन वे से बनाई गई हैं origin/A
, और इसलिए ओपी प्रश्न की शाब्दिक व्याख्या के लिए तीनों को हटाने की आवश्यकता होगी। हालांकि, यह वांछनीय नहीं हो सकता है, यदि आप उन्हें मैच करने के लिए एक विश्वसनीय तरीका भी पा सकते हैं ...