Git में, शाखाएँ एक निर्देशित चक्रीय ग्राफ (DAG) के कमिट्स में आने वाले बिंदु (संदर्भ) हैं। इसका मतलब यह है कि एक शाखा को हटाने से केवल कमिट्स के संदर्भ हटा दिए जाते हैं, जो कि डीएजी में कुछ कमिट कर सकते हैं, इस तरह अदृश्य हो सकते हैं। लेकिन सभी कमिट जो कि डिलीट की गई ब्रांच पर थीं, अभी भी रिपॉजिटरी में होंगी, कम से कम जब तक अगम्य कॉंटिट्यूड प्रून हो जाता है (उदाहरण के लिए git gc
)।
ध्यान दें कि git branch -d
एक शाखा को हटाने से इंकार कर दिया जाए तो यह सुनिश्चित नहीं किया जा सकता है कि इसे हटाने से यह पहुंच से बाहर नहीं होगा। आपको git branch -D
शाखा को हटाने के लिए मजबूत का उपयोग करने की आवश्यकता है यदि यह पहुंच से बाहर हो सकता है।
ध्यान दें कि पहुंच योग्य नहीं होने पर, यदि वे मौजूद हैं, तो वे केवल हटाए गए शाखा के अंतिम सिरे के बीच स्थित हैं और या तो एक प्रतिबद्ध है जो किसी अन्य मौजूदा शाखा में विलय हो गया है, किसी भी टैग किए गए कमिट, या शाखा बिंदु; जो भी बाद में हो। निम्न स्थिति में उदाहरण के लिए:
---- ओ ---- * ---- * ---- / एम ---- * <- मास्टर <- हेड
\ /
\ - - ---- .-- / - x --- y <- हटाई गई शाखा
केवल 'x' और 'y' को हटाता है, शाखा को हटाने के बाद पहुंच से बाहर हो जाएगा।
यदि आप gc.reflogExpire
90 दिनों की अवधि के भीतर एक डिलीट ब्रांच पर काम करते हैं , तो आपके पास HEAD रिफ्लॉग (देखें git reflog show HEAD
, या git log --oneline --walk-reflogs HEAD
) में डिलीट ब्रांच का आखिरी सिरा होगा । आपको हटाए गए सूचक को पुनर्प्राप्त करने के लिए HEAD reflog का उपयोग करने में सक्षम होना चाहिए। यह भी ध्यान दें कि इस मामले में, केवल एक हटाए गए शाखा में पहुंच योग्य नहीं है, इस gc.reflogExpireUnreachable
अवधि के भीतर छंटाई (हटाने) से संरक्षित किया जाएगा , जो कि डिफ़ॉल्ट रूप से 30 दिनों का है।
यदि आप HEAD के लिए किसी भी हटाए गए शाखा की नोक को नहीं ढूंढ सकते हैं, तो आप हटाए गए शाखा की नोक git fsck
को खोजने के लिए "अगम्य प्रतिबद्ध <sha1>" खोजने के लिए उपयोग कर सकते हैं , और उन (माध्यम git show <sha1>
से git log <sha1>
) की जांच कर सकते हैं।
डिलीट ब्रांच की टिप कैसे मिलती है, इस पर स्वतंत्र, आप डिलीट को पूर्ववत कर सकते हैं, या केवल डिलीट की गई ब्रांच का उपयोग करके फिर से बना सकते हैं
git branch <deleted-branch> <found-sha1-id>
ध्यान दें कि एक शाखा के लिए फिर से खोना खो जाएगा।
इसमें git-resurrect.sh स्क्रिप्ट भी है contrib/
जिसमें दिए गए नाम के साथ एक शाखा टिप के निशान ढूंढने में मदद मिलती है और इसे पुनर्जीवित (undelete) करती है।