macOS पर यह जाँचने के लिए कि किसी स्थानीय Git ब्रांच को हटाना सुरक्षित है या नहीं, अपने वर्किंग ट्री का निरीक्षण करें, उस ब्रांच के कमिट्स की तुलना उस ब्रांच से करें जिसे आप रखना चाहते हैं, और यह जाँचें कि क्या इसका उपयोग किसी अन्य वर्क-ट्री में किया जा रहा है। टर्मिनल खोलें, रिपॉजिटरी में जाएँ, और Git की मर्ज्ड-ब्रांच जाँच का उपयोग केवल साक्ष्य के रूप में करें—इस गारंटी के रूप में नहीं कि ब्रांच का कोई महत्व नहीं है। यदि आप आश्वस्त नहीं हैं, तो ब्रांच को तब तक बनाए रखें जब तक आप यह पुष्टि न कर लें कि इसका काम सुरक्षित (प्रिजर्व) है।

1. रिपॉजिटरी खोलें और अधूरे बदलावों की जाँच करें

Applications > Utilities से Terminal खोलें, या इसे खोजने के लिए Spotlight का उपयोग करें। Apple zsh को Terminal के डिफ़ॉल्ट शेल के रूप में दस्तावेज़ित करता है, और नीचे दिए गए कमांड मानक macOS सेटअप में काम करते हैं। Terminal में, रिपॉजिटरी डायरेक्टरी में जाएँ; यदि पाथ में स्पेस हैं तो उसे उद्धरण चिह्नों (quotes) में रखें:

cd "/path/to/your/repository"
git status --short --branch

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

2. जाँचें कि क्या ब्रांच सही टारगेट में मर्ज हो गई है

सबसे पहले उस ब्रांच की पहचान करें जिसे आप रखना चाहते हैं, आमतौर पर main या develop। यदि आप वर्तमान में उस ब्रांच पर हैं जिसे हटाया जाना है, तो कुछ भी हटाने से पहले टारगेट ब्रांच पर स्विच करें। नीचे दिए गए feature/example और main को अपने वास्तविक ब्रांच नामों से बदलें:

git switch main
git branch --merged main
git branch --no-merged main

पहली सूची में वे स्थानीय ब्रांच शामिल हैं जिनके टिप्स main से पहुँच योग्य (reachable) हैं; दूसरी सूची में वे ब्रांच हैं जिनके टिप्स नहीं हैं। Git git branch --merged का वर्णन निर्दिष्ट कमिट (या यदि कोई निर्दिष्ट नहीं है तो HEAD) में मर्ज की गई ब्रांचों को सूचीबद्ध करने के रूप में करता है। यह एक कमिट-हिस्ट्री परीक्षण है, इसलिए यह केवल तभी उपयोगी होता है जब main वह ब्रांच हो जिसमें वह काम शामिल होना चाहिए। किसी अन्य रिलीज़ या इंटीग्रेशन ब्रांच में मर्ज की गई ब्रांच अभी भी main के मुकाबले अनमर्ज्ड दिखाई दे सकती है। Git branch दस्तावेज़

यदि हटाने योग्य ब्रांच --merged main में दिखाई देती है, तो यह एक पुख्ता संकेत है कि इसके कमिट्स पहले से ही main से पहुँच योग्य हैं। पुष्टि करें कि फीचर या सुधार (fix) अपेक्षित जगह पर मौजूद है, विशेष रूप से यदि आपकी टीम पुल रिक्वेस्ट, रिलीज़ ब्रांच, या किसी भिन्न मर्ज टारगेट का उपयोग करती है। यदि यह --no-merged के अंतर्गत दिखाई देती है, तो इसे तब तक न हटाएं जब तक आप यह न देख लें कि इसके लिए कौन से कमिट्स विशिष्ट (unique) हैं।

3. कमिट्स और अपस्ट्रीम ट्रैकिंग का निरीक्षण करें

हटाने योग्य ब्रांच की टारगेट से तुलना करने के लिए, उपयोग करें:

git log --oneline main..feature/example

यह उन कमिट्स को दिखाता है जो feature/example से पहुँच योग्य हैं लेकिन main से नहीं। यदि यह कमिट्स प्रिंट करता है, तो उनका निरीक्षण करें और तय करें कि क्या उन्हें मर्ज करने, चेरी-पिक करने या रखने की आवश्यकता है। एक खाली परिणाम का मतलब है कि इस तुलना में उस ब्रांच के पास main के अलावा कोई अन्य कमिट नहीं हैं; यह स्थापित नहीं करता है कि ब्रांच नाम या उसके उद्देश्य की अब कोई आवश्यकता नहीं है।

एक ब्रांच किसी रिमोट ब्रांच को भी ट्रैक कर सकती है। इसकी ट्रैकिंग जानकारी इससे जाँचें:

git branch -vv

अपस्ट्रीम एक कॉन्फ़िगर किया गया संदर्भ (reference) है जिसका उपयोग Git द्वारा पुल और पुश जैसे कार्यों के लिए किया जाता है। एक अनुपस्थित या समाप्त (gone) अपस्ट्रीम यह साबित नहीं करता है कि स्थानीय ब्रांच को हटाना सुरक्षित है: इसके कमिट्स अभी भी अद्वितीय (unique) हो सकते हैं। इसके अलावा, जब तक आप फ़ेच नहीं करते तब तक रिमोट-ट्रैकिंग संदर्भ पुराना (stale) हो सकता है। यदि आप रिमोट-ट्रैकिंग डेटा को रीफ़्रेश करना चाहते हैं, तो git fetch --prune origin, origin से फ़ेच करता है और उस रिमोट के refspec के अनुसार पुराने रिमोट-ट्रैकिंग संदर्भों को हटा देता है; यह आपकी स्थानीय ब्रांच को नहीं हटाता है। Git fetch दस्तावेज़

4. वर्क-ट्री की जाँच करें, फिर सुरक्षित रूप से हटाएं

एक ब्रांच किसी अन्य लिंक्ड वर्क-ट्री में चेक आउट हो सकती है। Git ऐसी ब्रांच को हटाने से मना कर देता है जो चेक आउट है, इसलिए यदि विलोपन (deletion) अस्वीकार कर दिया जाता है, तो git worktree list की जाँच करें और आगे की कार्रवाई करने से पहले सूचीबद्ध डायरेक्टरीज़ का निरीक्षण करें। यह भी सत्यापित करें कि वह ब्रांच आपकी वर्तमान ब्रांच नहीं है; पहले इच्छित टारगेट पर स्विच करें। Git branch दस्तावेज़

जब आप पुष्टि कर लें कि काम सुरक्षित है और ब्रांच की अब आवश्यकता नहीं है, तो Git के सुरक्षित विकल्प का उपयोग करके इसे हटाएं:

git branch -d feature/example

Git -d की अनुमति केवल तभी देता है जब ब्रांच पूरी तरह से अपने कॉन्फ़िगर किए गए अपस्ट्रीम में मर्ज हो गई हो, या जब कोई अपस्ट्रीम कॉन्फ़िगर न हो तो HEAD में। यदि Git मना करता है, तो इसे जाँच-पड़ताल करने के संकेत के रूप में लें। -D मर्ज स्थिति की परवाह किए बिना जबरन हटा देता है (force delete); यह इस सुरक्षा उपाय को बायपास करता है और इसे नियमित समाधान नहीं बनाया जाना चाहिए। Git branch दस्तावेज़

एक सतर्क निर्णय सीधा है: -d के साथ केवल तभी हटाएं जब उस ब्रांच का काम इच्छित गंतव्य में मौजूद हो, अद्वितीय कमिट्स की समीक्षा कर ली गई हो, और कोई भी वर्क-ट्री अभी भी उस ब्रांच का उपयोग न कर रहा हो। यदि इनमें से कोई भी जाँच अस्पष्ट है, तो ब्रांच को बनाए रखें और पहले इसके गंतव्य को स्पष्ट करें।

स्रोत