मुख्य सामग्री पर जाएँ

Git Delete Branch: स्थानीय और रिमोट ब्रांच कैसे हटाएँ

यह गाइड बताता है कि Git में ब्रांचें—स्थानीय और रिमोट—कैसे हटाएँ, और आकस्मिक डेटा लॉस से बचने के लिए सर्वोत्तम प्रक्रियाएँ कैसे अपनाएँ।
· 15 मि॰ पढ़ें

AI के साथ खोजें

यदि आप मेरी तरह सक्रिय Git उपयोगकर्ता हैं, तो संभव है कि आपने पुरानी ब्रांचों का ढेर जमा कर लिया हो। कुछ मर्ज हो चुकी हैं, कुछ छोड़ दी गई हैं, और कुछ ऐसी हैं जिनके बारे में आपको याद भी नहीं कि उन्हें कब बनाया था। उन्हें यूँ ही रहने देना तात्कालिक रूप से बड़ी बात नहीं लगता, लेकिन समय के साथ वे आपके रिपॉजिटरी में अव्यवस्था बढ़ाती हैं और सक्रिय काम पर नज़र रखना कठिन बना देती हैं।

इस गाइड में, मैं समझाऊँगा कि Git ब्रांचों को स्थानीय और रिमोट दोनों जगह कैसे हटाया जाए, इसे सुरक्षित तरीके से करने के उपाय, और किन संभावित मुश्किलों से बचना चाहिए।

Git ब्रांच हटाने से होता क्या है?

Git ब्रांचें मूल रूप से अस्थायी होती हैं। वे आपको नई फ़ीचर, बग फ़िक्स या प्रयोग करने के लिए ऐसी जगह देती हैं जहाँ मुख्य कोडबेस में दखल न पड़े। लेकिन जैसे ही एक ब्रांच अपना काम पूरा कर लेती है, उसे बनाए रखना अनावश्यक अव्यवस्था ही जोड़ता है। ब्रांचें हटाना, मेरी नज़र में, आपके Git वर्कफ़्लो को साफ़-सुथरा और संभालने योग्य रखने की अच्छी देखभाल है।

मैं यह दोहराना चाहूँगा कि “ब्रांच हटाना” आपके काम को “मिटाना” नहीं है। Git में जब आप कोई ब्रांच हटाते हैं, तो आप कमिट्स नहीं, सिर्फ़ उनके रेफ़रेंस को हटाते हैं। यह ऐसे काम करता है:

  • स्थानीय ब्रांच हटाना आपके पर्सनल रिपॉजिटरी से ब्रांच को हटाता है। यदि उन कमिट्स की ओर किसी अन्य ब्रांच या टैग का इशारा नहीं है, तो Git का गार्बेज कलेक्शन उन्हें अंततः साफ़ कर सकता है।
  • रिमोट ब्रांच हटाना साझा रेपोजिटरी (जैसे GitHub, GitLab, Bitbucket) से ब्रांच हटाता है, जिससे यह सहकर्मियों के लिए दुर्गम हो जाती है। हालाँकि, अन्य मशीनों पर उस ब्रांच की कोई स्थानीय प्रति तब तक बनी रहेगी जब तक उसे मैन्युअली हटाया या अपडेट नहीं किया जाता।

ब्रांच क्यों हटाएँ?

ब्रांच हटाना अच्छी देखभाल है, बस इतना ही। जैसे डुप्लिकेट फ़ोटो, पुराने डाउनलोड और आउटडेटेड फ़ोल्डर हटाना अच्छी आदत है, वैसे ही जब आप किसी ब्रांच का काम पूरा कर लें, तो उसे हटाने के कई अच्छे कारण हैं:

  • यह आपके रिपॉजिटरी को साफ़ रखता है। बहुत ज़्यादा ब्रांचें, खासकर पुरानी, सक्रिय काम पर नज़र रखना मुश्किल बना देती हैं।
  • यह भ्रम से बचाता है। यदि कोई ब्रांच अब प्रासंगिक नहीं है, तो उसे बनाए रखना यह अनिश्चितता पैदा कर सकता है कि क्या वह अभी भी उपयोग में है।
  • यह सहयोग को बेहतर बनाता है। टीम वातावरण में, पूरी हो चुकी फ़ीचर ब्रांचों को हटाना संकेत देता है कि काम पूरा हो गया है और आउटडेटेड कोड पर अनावश्यक काम से बचाता है।
  • यह रिमोट रिपॉजिटरी की फुलावट कम करता है। रिमोट रिपॉजिटरी बेकार पड़ी ब्रांचों से भर सकती हैं, जिससे आपको (या किसी दर्शक को) प्रोजेक्ट हिस्ट्री में नेविगेट करना कठिन होता है।

यदि आप Git में नए हैं या ब्रांचें प्रबंधित करने से पहले इसे सेटअप करने की ज़रूरत है, तो चरण-दर-चरण निर्देशों के लिए Git इंस्टॉलेशन ट्यूटोरियल देखें।

स्थानीय Git ब्रांच हटाना

स्थानीय ब्रांच हटाना मुश्किल नहीं है; सौभाग्य से, यह Git के अधिक सीधे-साधे कार्यों में से एक है। आइए इसे करने का सबसे सुरक्षित तरीका और किन बातों पर ध्यान देना है, देखें।

स्थानीय ब्रांच हटाने का बेसिक कमांड

स्थानीय ब्रांच को हटाने का सबसे सुरक्षित तरीका -d फ्लैग के साथ है:

git branch -d <branch_name>

ध्यान रखें कि यह कमांड तभी काम करता है जब ब्रांच वर्तमान ब्रांच (आमतौर पर main या master) में पूरी तरह मर्ज हो चुकी हो। यदि कोई अनमर्ज्ड बदलाव हैं, तो Git आकस्मिक डेटा लॉस से बचाने के लिए आपको रोकेगा।

स्थानीय ब्रांच को बलपूर्वक हटाना

यदि आप ऐसी ब्रांच हटाने की कोशिश करते हैं जिसमें अभी भी अनमर्ज्ड बदलाव हैं, तो Git तब तक नहीं मानेगा जब तक आप इसे फ़ोर्स न करें:

git branch -D <branch_name>

-D फ्लैग (ध्यान दें, अपरकेस) सेफ़्टी चेक को स्किप करके ब्रांच को तुरंत हटा देता है, चाहे वह मर्ज हुई हो या नहीं। मैं इससे अत्यंत सावधानी बरतने की सलाह दूँगा। कोई भी अनमर्ज्ड काम खो जाएगा, जब तक कि आपके पास बैकअप न हो या वही कमिट्स किसी और ब्रांच से भी पॉइंट न हो रहे हों।

हटाने से पहले अनमर्ज्ड बदलाव जाँचना

ब्रांच हटाने से पहले यह जाँच लेना अच्छा रहता है कि उसमें कोई अनमर्ज्ड बदलाव तो नहीं हैं। आप यह इस कमांड से कर सकते हैं:

git branch --no-merged

ऊपर दिया कमांड उन सभी ब्रांचों की सूची देता है जो वर्तमान ब्रांच में मर्ज नहीं हुई हैं। यदि जिसे आप हटाने वाले हैं वह इसमें दिखती है, तो आगे बढ़ने से पहले दोबारा जाँच लें कि आपको उसके किसी बदलाव की ज़रूरत तो नहीं।

Git कमांड्स, जिनमें ब्रांच हटाना भी शामिल है, का त्वरित संदर्भ चाहिए? यह उपयोगी Git चीट शीट डाउनलोड करें।

रिमोट Git ब्रांच हटाना

रिमोट ब्रांच हटाना, स्थानीय ब्रांच हटाने से थोड़ा अलग है। क्योंकि रिमोट ब्रांचें साझा रिपॉजिटरी में होती हैं, उन्हें हटाना चीज़ों को व्यवस्थित रखने और टीम के वर्कफ़्लो में आउटडेटेड ब्रांचों की अव्यवस्था से बचने में मदद करता है।

रिमोट ब्रांच हटाने का बेसिक कमांड

GitHub, GitLab या Bitbucket जैसे रिमोट रिपॉजिटरी से ब्रांच हटाने के लिए यह चलाएँ:

git push origin --delete <branch_name>

यह कमांड रिमोट रिपॉजिटरी से ब्रांच रेफ़रेंस हटाता है, जिससे वह दूसरों के लिए दुर्गम हो जाती है। हालाँकि, अन्य मशीनों पर उस ब्रांच की स्थानीय कॉपियाँ प्रभावित नहीं होंगी—उन्हें अलग से साफ़ करना होगा।

रिमोट ब्रांच हटने की पुष्टि करना

रिमोट ब्रांच हटाने के बाद, आपको पुष्टि करनी होगी कि वह सच में हट गई है। पहले, रिमोट रिपॉजिटरी से नवीनतम अपडेट फ़ेच करें:

git fetch --prune

यह पुराने रिमोट-ट्रैकिंग रेफ़रेंस हटाता है। यह दोबारा जाँचने के लिए कि ब्रांच अब सूची में नहीं है, निम्न चलाएँ:

git branch -r

ऊपर दिया कमांड शेष सभी रिमोट ब्रांचें दिखाता है। यदि हटाई गई ब्रांच फिर भी दिख रही है, तो git fetch --prune दोबारा चलाएँ या सुनिश्चित करें कि डिलीशन कमांड सही रिमोट पर चलाया गया था।

Git ब्रांचें हटाने की सर्वोत्तम प्रक्रियाएँ

Git के साथ काम करते समय ब्रांचों को हटाना एक नियमित काम है, लेकिन इसे सही तरीके से करने से आप अनावश्यक परेशानियों से बच सकते हैं। यहाँ कुछ सर्वोत्तम प्रक्रियाएँ हैं, जो आपके रिपॉजिटरी को व्यवस्थित रखने और संभावित गलतियों से बचने में मदद करेंगी।

अनमर्ज्ड ब्रांचें समय से पहले न हटाएँ

ब्रांच हटाने से पहले सुनिश्चित कर लें कि उसमें ऐसा कोई अनमर्ज्ड काम न हो जिसकी अभी ज़रूरत है। यदि आप अनिश्चित हैं, तो उसकी स्थिति यह कमांड चलाकर जाँचें:

git branch --no-merged

यदि ब्रांच में मूल्यवान बदलाव हैं जो अभी तक मर्ज नहीं हुए, तो उसे सीधे हटाने की बजाय पहले उन्हें मर्ज या आर्काइव करने पर विचार करें।

मर्ज होने के बाद हटाएँ

जब कोई फ़ीचर या फ़िक्स मुख्य ब्रांच (main या master) में मर्ज हो जाए, तो पुरानी ब्रांच को रखने का कोई कारण नहीं बचता। मर्ज्ड ब्रांचें हटाने से अव्यवस्था घटती है और यह देखना आसान होता है कि कौन-सी ब्रांचें अभी सक्रिय हैं।

अपनी टीम से संवाद करें

पेशेवर शिष्टाचार के रूप में, जब आप एक सहयोगी प्रोजेक्ट पर काम कर रहे हों, तो बिना बताए कोई ब्रांच न हटाएँ। यह भ्रम पैदा कर सकता है—या बदतर, किसी और के काम में बाधा डाल सकता है। रिमोट ब्रांच हटाने से पहले, टीम से यह सुनिश्चित कर लें कि कोई उसका उपयोग नहीं कर रहा। मैं खीझ से बचने के लिए एक साधारण Slack संदेश या नोट को प्राथमिकता देता/देती हूँ।

ब्रांच हटाने से पहले, आप कमिट हिस्ट्री को स्क्वैश करके भी सुथरा करना चाह सकते हैं। यह सीखें हमारे Git Squash Commits ट्यूटोरियल में।

Git ब्रांचें हटाते समय आम समस्याएँ

Git में ब्रांचें हटाना आम तौर पर बिना समस्या के होता है, लेकिन कुछ सामान्य पेंच हैं जो अड़चन बन सकते हैं। यहाँ देखें किन बातों से सावधान रहना है और वे समस्याएँ आएँ तो उन्हें कैसे संभालें।

ऐसी ब्रांच हटाना जो पूरी तरह मर्ज नहीं हुई

फिर से, यदि आप git branch -d से अनमर्ज्ड बदलावों वाली ब्रांच हटाने की कोशिश करते हैं, तो संभावित डेटा लॉस से बचाने के लिए Git आपको रोक देगा। यह एक फेल-सेफ़ है। यदि आप -D के साथ फ़ोर्स डिलीट करते हैं, तो कोई भी अनमर्ज्ड काम खो जाएगा।

यदि आपने ब्रांच हटा दी है और बाद में एहसास हुआ कि उसकी ज़रूरत है, तो आप Git के reflog का उपयोग करके उसे पुनर्प्राप्त कर सकते हैं:

git reflog
git checkout -b <branch_name> <commit_hash>

यदि वह पूरी तरह गार्बेज कलेक्शन में नहीं गई है, तो यह आपको अंतिम ज्ञात कमिट से ब्रांच बहाल करने देता है।

वर्तमान ब्रांच को हटाना

Git आपको उस ब्रांच को हटाने नहीं देगा जिस पर आप अभी हैं, और यह वाजिब है—वरना आप बिना किसी सक्रिय ब्रांच के रह जाएँगे। यदि ब्रांच हटाने की कोशिश पर एरर दिखे, तो पहले किसी और ब्रांच पर स्विच करें:

git checkout main

या, Git 2.23+ में:

git switch main

किसी दूसरी ब्रांच पर आ जाने के बाद, आप सुरक्षित रूप से इच्छित ब्रांच हटा सकते हैं।

ब्रांच हटाने से पहले उनके बीच स्विच करना है? हमारा Git में रिमोट ब्रांच चेकआउट करने पर गाइड यह प्रक्रिया समझाता है।

गलती से रिमोट ब्रांच हट जाना

यदि रिमोट ब्रांच गलती से हट गई है, तो आप (मानकर कि आपके पास उसकी स्थानीय कॉपी है) उसे फिर से रिमोट पर पुश करके बहाल कर सकते हैं:

git push origin <deleted_branch_name>

यह रिमोट रिपॉजिटरी पर ब्रांच को दोबारा बनाता है, जिससे सहयोगियों की पहुँच बहाल हो जाती है। यदि कोई स्थानीय कॉपी नहीं है, तो आपको अपनी कमिट हिस्ट्री मैन्युअली जाँचकर ब्रांच फिर से बनानी पड़ सकती है।

मैं Git ब्रांच क्यों नहीं हटा पा रहा/रही हूँ?

यदि आपको Git में ब्रांच हटाने में दिक्कत हो रही है, तो आम समस्याओं पर फिर से नज़र डालें; जाँचें कि क्या वह पूरी तरह मर्ज है, क्या आप उसी ब्रांच पर हैं, या क्या वह रिमोट ब्रांच है। इसके बाद, मामला आपकी सेटिंग्स या परमिशन का हो सकता है।  

  1. सबसे पहले देखें कि क्या आप अभी उसी ब्रांच पर हैं। Git आपको सक्रिय ब्रांच हटाने नहीं देगा, इसलिए पहले आपको किसी दूसरी ब्रांच पर स्विच करना होगा। 
  2. यदि यह समस्या नहीं है, तो ब्रांच में अभी भी अनमर्ज्ड बदलाव हो सकते हैं। Git अनमर्ज्ड काम वाली ब्रांचों की रक्षा करता है, इसलिए जब तक आप पूरी तरह आश्वस्त न हों कि उन बदलावों की ज़रूरत नहीं, आपको उन्हें मर्ज करना होगा या git branch -D branch-name से ब्रांच को फ़ोर्स-डिलीट करना होगा।
  3. यदि आप रिमोट ब्रांच हटाने की कोशिश कर रहे हैं, तो साधारण git branch -d काम नहीं करेगा। इसके बजाय, आपको git push origin --delete branch-name चलाना होगा, और पुराने रेफ़रेंस साफ़ करने के लिए git fetch --prune का उपयोग कर सकते हैं। 
  4. कुछ रिपॉजिटरी, खासकर GitHub या GitLab जैसे प्लेटफ़ॉर्म पर होस्टेड, में प्रोटेक्टेड ब्रांचें होती हैं जिन्हें सेटिंग बदले बिना हटाया नहीं जा सकता। यदि आप साझा रिपॉजिटरी में काम कर रहे हैं, तो ब्रांच हटाने के लिए आपके पास सही परमिशन भी होने चाहिए।

अब भी अटके हैं? git branch -v चलाने से ब्रांच की स्थिति के बारे में अधिक विवरण मिल सकते हैं और दोबारा कोशिश करने से पहले समझने में मदद मिल सकती है कि समस्या क्या है।

Git के साथ ब्रांच क्लीनअप ऑटोमेट करना

मुझे अच्छी ऑटोमेशन पसंद है। हालाँकि ब्रांचें मैन्युअली हटाना ठीक है—और आपको यह करना आना चाहिए—एक और तरीका भी है। यदि आप बहुत सारी ब्रांचों से जूझ रहे हैं (जैसे टीम सेटिंग में), तो ऑटोमेशन समय बचा सकता है और चीज़ों को अधिक सुथरा रख सकता है। Git ब्रांच क्लीनअप को सुव्यवस्थित करने के कुछ तरीके देता है, जिससे बिना अतिरिक्त मेहनत के अव्यवस्था घटती है।

रिमोट ब्रांच क्लीनअप ऑटोमेट करें

जब कोई रिमोट ब्रांच हटाई जाती है, तो आपका स्थानीय Git तब तक उसका रेफ़रेंस बनाए रखता है जब तक आप मैन्युअली अपडेट न करें। एक-एक करके साफ़ करने के बजाय, आप यह चला सकते हैं:

git fetch --prune

ऊपर दिया कमांड उन ब्रांचों के स्थानीय रेफ़रेंस अपने-आप हटा देता है जो अब रिमोट रिपॉजिटरी पर मौजूद नहीं हैं, जिससे सब कुछ सिंक में रहता है। इसे नियमित रूप से चलाने से आपके स्थानीय रेपो में आउटडेटेड ब्रांचों का अंबार नहीं लगता।

क्लीनअप के लिए Git hooks का उपयोग करें

टीमों या बड़े प्रोजेक्ट्स के लिए, Git hooks ब्रांच क्लीनअप ऑटोमेट करने में मदद कर सकते हैं। हुक्स कस्टम स्क्रिप्ट होते हैं जो Git वर्कफ़्लो के कुछ बिंदुओं पर चलते हैं, जैसे किसी ब्रांच के मर्ज होने के बाद। आप पोस्ट-मर्ज हुक कॉन्फ़िगर कर सकते हैं जो एक निश्चित अवधि के बाद मर्ज्ड ब्रांचों को अपने-आप हटा दे, ताकि पुरानी ब्रांचें अनावश्यक रूप से न टिकी रहें।

निष्कर्ष

समय के साथ ब्रांचें बिखर सकती हैं, पर थोड़ी “छँटाई” आपके रिपॉजिटरी को साफ़ और वर्कफ़्लो को कुशल रखती है। मर्ज्ड ब्रांचें हटाने की आदत डालकर, अनमर्ज्ड ब्रांचों को दोबारा जाँचकर, और टीम प्रोजेक्ट्स में संवाद खुला रखकर आप इन समस्याओं से बच सकते हैं। और यदि आप इसे और आगे ले जाना चाहते हैं, तो git fetch --prune और Git hooks जैसे ऑटोमेशन टूल बिना अतिरिक्त प्रयास के आपका रेपो साफ़ रखने में मदद कर सकते हैं।

ब्रांचें हटाना Git में महारत की दिशा में बस एक कदम है। वर्ज़न कंट्रोल की समझ गहरी करने के लिए Intermediate Git कोर्स देखें। यदि आप GitHub रिपॉजिटरी के साथ काम कर रहे हैं, तो GitHub की मूल अवधारणाओं की ठोस समझ आवश्यक है। अधिक जानें Introduction to GitHub Concepts कोर्स में!

FAQs

क्या Git में ब्रांच हटाने से मेरा प्रोडक्शन कोड प्रभावित हो सकता है?

नहीं, जब तक ब्रांच आपकी मुख्य ब्रांच (main या master) में पहले से मर्ज हो चुकी है, उसे हटाने से प्रोडक्शन कोड प्रभावित नहीं होता। हालाँकि, यदि आप अनमर्ज्ड बदलावों वाली ब्रांच हटा देते हैं, तो कोई भी काम जो किसी अन्य ब्रांच में शामिल नहीं हुआ है, खो जाएगा। हटाने से पहले हमेशा मर्ज स्थिति जाँचें।

मैं अपनी टीम को गलती से महत्वपूर्ण ब्रांचें हटाने से कैसे रोकूँ?

यदि आप किसी साझा रिपॉजिटरी (GitHub, GitLab, आदि) में काम कर रहे हैं, तो main और develop जैसी महत्वपूर्ण ब्रांचों को ब्रांच प्रोटेक्शन नियम सेट करके सुरक्षित कर सकते हैं। यह आकस्मिक डिलीशन और अनधिकृत फ़ोर्स पुश से बचाता है। स्थानीय रिपॉजिटरी के लिए, नामकरण परंपराएँ अपनाएँ (जैसे, प्रगति पर काम के लिए wip- प्रीफ़िक्स) ताकि पता रहे कि किन्हें अभी नहीं हटाना चाहिए।

क्या रिमोट Git ब्रांच किसने हटाई, इसे ट्रैक करने का कोई तरीका है?

हाँ, GitHub, GitLab या Bitbucket पर होस्टेड रिपॉजिटरी में, ब्रांच डिलीशन आमतौर पर एक्टिविटी फ़ीड में लॉग होती है। आप अपने रिपॉजिटरी के ऑडिट लॉग्स या कमिट हिस्ट्री देख सकते हैं कि किसने कब ब्रांच हटाई। स्वयं-होस्टेड Git रिपॉजिटरी के लिए, आपको डिलीशन ट्रैक करने हेतु सर्वर-साइड हुक्स सेट करने पड़ सकते हैं।

यदि मैंने टर्मिनल बंद कर दिया हो तो हटाई गई Git ब्रांच कैसे रिकवर करूँ?

यदि आपने ब्रांच हटा दी है और अपना टर्मिनल बंद नहीं किया है, तो आप इसे इस तरह पलट सकते हैं:

git checkout -b <branch_name> <commit_hash>

लेकिन यदि आपने टर्मिनल बंद कर दिया है, तो सबसे अच्छा विकल्प git reflog का उपयोग करना है।

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

वास्तविक उपयोग में `git branch -d` और `git branch -D` में क्या अंतर है?
  • git branch -d <branch> — सुरक्षित डिलीट। यदि ब्रांच में अनमर्ज्ड बदलाव हैं, तो यह हटाने से रोकेगा और सेफ़्टी नेट की तरह काम करेगा।
  • git branch -D <branch> — फ़ोर्स डिलीट। इसे परवाह नहीं कि ब्रांच में अनमर्ज्ड बदलाव हैं—यह उसे तुरंत हटा देगा।

वास्तविक दुनिया में, आप ज़्यादातर समय -d का उपयोग करेंगे ताकि गलती से काम न खो जाए। -D तभी इस्तेमाल करें जब आप 100% सुनिश्चित हों कि ब्रांच की सामग्री अब ज़रूरी नहीं है।

Ashlyn Brooks

लेखक

Ashlyn Brooks

Ashlyn Brooks एक टेक्निकल राइटर हैं, जो क्लाउड प्लेटफ़ॉर्म्स (Azure, AWS), API डॉक्यूमेंटेशन, और डेटा इन्फ्रास्ट्रक्चर में विशेषज्ञता रखती हैं। सात से अधिक वर्षों के अनुभव के साथ, वह जटिल अवधारणाओं को स्पष्ट, उपयोगकर्ता-अनुकूल सामग्री में बदलने में माहिर हैं, जो डेवलपर अनुभव और प्रोडक्ट अपनाने में सुधार करती है।

विषय