macOS पर, Terminal से git worktree remove का उपयोग करके पूरा हो चुका लिंक्ड worktree हटाएं, लेकिन पहले यह जांच लें कि क्या इसमें ऐसे बदलाव हैं जिनकी आपको अभी भी ज़रूरत है। Git एक क्लीन worktree को हटा देता है; यदि यह डर्टी है, तो यह तब तक रुक जाता है जब तक कि आप ज़बरदस्ती हटाने का निर्देश न दें। अधूरा काम सुरक्षित रखने के लिए, डायरेक्ट्री हटाने से पहले उसे कमिट करें या स्टैश करें। Git की चेतावनी को बायपास करने के लिए केवल --force न जोड़ें: यह worktree की स्थानीय फ़ाइलों को नष्ट कर सकता है। ये चरण लिंक्ड worktrees पर लागू होते हैं, रिपॉजिटरी की मुख्य वर्किंग डायरेक्ट्री पर नहीं। Git का worktree दस्तावेज़

1. worktree ढूंढें और उसकी स्थिति जांचें

Terminal खोलें और मुख्य रिपॉजिटरी या उसी रिपॉजिटरी से संबंधित किसी भी लिंक्ड worktree पर जाएं। सभी संबंधित worktree पाथ और शाखाओं (branches) को देखने के लिए, चलाएं:

git worktree list

पूरे हो चुके worktree का सटीक पाथ कॉपी करें। फिर उस worktree के अंदर से उसकी स्थिति का निरीक्षण करें, यदि पाथ में स्पेस हैं तो उसे उद्धरण चिह्नों (quotes) में रखें:

cd "/path/to/finished-worktree"
git status --short --branch

स्टेटस आउटपुट से संशोधित या स्टेज की गई ट्रैक्ड फ़ाइलों और अनट्रैक्ड फ़ाइलों का पता लगाने में मदद मिलती है। इसके अलावा, उन स्थानीय फ़ाइलों के लिए Finder में worktree की जांच करें जिन पर आपका वर्कफ़्लो निर्भर करता है। Git द्वारा अनदेखी (ignored) की गई फ़ाइलें सामान्य स्टेटस आउटपुट में दिखाई नहीं दे सकती हैं। यदि आप अनिश्चित हैं कि डायरेक्ट्री में मौजूद कोई चीज़ अनुपयोगी (disposable) है या नहीं, तो हटाने से पहले रुकें और एक अलग बैकअप बना लें या डायरेक्ट्री को सुरक्षित रखें। Git worktree अपने मुख्य worktree के साथ रिपॉजिटरी डेटा साझा करता है, लेकिन इसका अपना चेकआउट और इंडेक्स होता है; चेकआउट को हटाना कोई सामान्य बैकअप प्रक्रिया नहीं है। Git worktree दस्तावेज़

2. उन बदलावों को सुरक्षित रखें जिन्हें आप रखना चाहते हैं

यदि काम रिपॉजिटरी में सहेजने के लिए तैयार है, तो इसे worktree की शाखा (branch) पर कमिट करें। पहले स्टेटस और diff की समीक्षा करें, फिर केवल उन्हीं फ़ाइलों को स्टेज करें जिन्हें आप शामिल करना चाहते हैं और उन्हें कमिट करें:

git diff
git add path/to/file
 git commit -m "Describe the finished work"

यदि आपका शेल इसे अप्रत्याशित रूप से प्रोसेस करता है, तो git commit से पहले दुर्घटनावश लगा शुरुआती स्पेस हटा दें; इसका सही स्वरूप git commit -m "Describe the finished work" है। कमिट बदलावों को Git इतिहास में सुरक्षित रखता है, लेकिन worktree हटाने से पहले जांच लें कि यह इच्छित शाखा पर ही है।

यदि बदलाव अभी पूरे नहीं हुए हैं, तो इसके बजाय ट्रैक्ड एडिट्स और अनट्रैक्ड फ़ाइलों को स्टैश करें:

git stash push -u -m "Before removing finished worktree"
git stash list

-u विकल्प में अनट्रैक्ड फ़ाइलें शामिल होती हैं। इग्नोर की गई फ़ाइलें इसमें शामिल नहीं होती हैं, इसलिए किसी भी इग्नोर किए गए स्थानीय कॉन्फ़िगरेशन, जनरेट की गई फ़ाइलों या अन्य आवश्यक डेटा को अलग से सुरक्षित रखें। आगे बढ़ने से पहले पुष्टि करें कि नया स्टैश सूची में दिखाई दे रहा है। स्टैश रिपॉजिटरी से संबंधित होते हैं, और आप बाद में किसी अन्य worktree से git stash apply stash@{0} के साथ सहेजे गए बदलावों को लागू कर सकते हैं; पहले एंट्री नंबर सत्यापित करें, क्योंकि बाद के स्टैश सूची के क्रम को बदल सकते हैं। स्टैश लागू करने से विरोध (conflicts) उत्पन्न हो सकते हैं, इसलिए स्टैश हटाने से पहले परिणाम का निरीक्षण करें। Git stash दस्तावेज़

3. क्लीन worktree हटाएं

अपनी ज़रूरत के बदलावों को कमिट या स्टैश करने के बाद, लक्षित डायरेक्ट्री से बाहर निकलें और उसी रिपॉजिटरी के किसी अन्य worktree से हटाने का कमांड चलाएं। git worktree list द्वारा रिपोर्ट किए गए सटीक पाथ का उपयोग करें:

cd "/path/to/main-repository"
git worktree remove "/path/to/finished-worktree"
git worktree list

दूसरी सूची यह उपयोगी पुष्टि करती है कि Git अब उस चेकआउट को सूचीबद्ध नहीं कर रहा है। Git के दस्तावेज़ों के अनुसार डिफ़ॉल्ट रूप से remove केवल क्लीन worktrees को ही स्वीकार करता है; एक अनट्रैक्ड फ़ाइल या किसी ट्रैक्ड फ़ाइल में किया गया संशोधन उसे हटने से रोक सकता है। Git worktree दस्तावेज़

यदि हटाने की प्रक्रिया यह रिपोर्ट करती है कि worktree क्लीन नहीं है, तो जब तक आप यह तय न कर लें कि बची हुई प्रत्येक स्थानीय फ़ाइल को हटाया जा सकता है, तब तक git worktree remove --force पर स्विच न करें। उस worktree पर वापस जाएं, git status की जांच करें, और पहले शेष फ़ाइलों या बदलावों को सुरक्षित रखें। विशेष रूप से, स्टैश में इग्नोर की गई फ़ाइलें शामिल नहीं होती हैं, और किसी सबमॉड्यूल में उसके अपने बदलाव हो सकते हैं जिन पर अलग से ध्यान देने की आवश्यकता होती है।

यदि आपने पहले ही Finder में फ़ोल्डर हटा दिया है

यदि आपने Git के बाहर किसी लिंक्ड worktree डायरेक्ट्री को हटा दिया है, तो उसका प्रशासनिक रिकॉर्ड बना रह सकता है। मुख्य रिपॉजिटरी से, git worktree list चलाएं और जांचें कि क्या अनुपलब्ध पाथ prunable चिह्नित है। Git उन worktrees के रिकॉर्ड हटाने के लिए git worktree prune प्रदान करता है जिनकी डायरेक्ट्री गायब हैं; यह हटाई गई प्रोजेक्ट फ़ाइलों को पुनर्स्थापित नहीं करता है। इसका उपयोग केवल यह पुष्टि करने के बाद ही करें कि डायरेक्ट्री वास्तव में गायब हो चुकी है और आपको इसकी सामग्री की आवश्यकता नहीं है। भविष्य में सफ़ाई के लिए, git worktree remove का उपयोग करें ताकि Git हटाने के हिस्से के रूप में worktree मेटाडेटा को अपडेट कर दे। Git worktree दस्तावेज़

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

स्रोत