git शाखा -d चेतावनी देती है


92

मैं स्थानीय शाखा को हटाने के बाद चेतावनी संदेश की बेहतर समझ प्राप्त करना चाहता हूं

चेतावनी: 'old_branch'उस शाखा को हटाना 'refs/remotes/origin/old_branch', जिसका विलय हो चुका है , लेकिन अभी तक विलय नहीं हुआ है HEAD


29
यदि आप विलय करते हैं - तो अपने पुराने_ब्रांच को हटा दें आपको स्थानीय रूप से हटाते समय आपको यह चेतावनी हमेशा मिलेगी। जब आपका सूचकांक स्क्वैशिंग रीसेट हो जाता है, तो पुराने_ब्रंच से मेल नहीं खाता है
एंटोनी विल्स

जबकि अन्य उत्तर सही हैं, एंटोनी की टिप्पणी मेरे मामले में कम से कम कारण थी।
शकुरपी

जवाबों:


66

यह आपको केवल चेतावनी दे रहा है कि आपके पास शाखा में धकेल दिए गए परिवर्तन हैं origin, लेकिन उनका विलय नहीं किया गया है master, इसलिए आप इसे केवल स्थानीय रूप से हटा रहे हैं।

यह आपको चेतावनी दे रहा है कि अब आपके पास उस शाखा की स्थानीय प्रति नहीं है, लेकिन यह मौजूद है origin

यदि आप दूरस्थ शाखा को भी हटाना चाहते हैं, तो उपयोग करें git push --delete origin old_branch


9
हाँ, masterइसमें शामिल नहीं है। आप वर्तमान शाखा का मतलब है, बल्कि। ;)
फर्नांडो एस्पिनोसा

1
मुझे यह चेतावनी तब भी मिलती है जब मैं ऐसा करता हूं git branch -d branch_nameजो केवल स्थानीय रूप से शाखा को हटाने के लिए माना जाता है। इस मामले में चेतावनी की आवश्यकता क्यों है?
अक्षय दामले

2
लेकिन मूल / पुराने_ब्रांच को मूल / मास्टर में विलय कर दिया गया है। बाद में मैंने मास्टर ब्रांच पर git पुल ओरिजनल किया। फिर भी वही त्रुटि। जीएच में यह बग नहीं है?
विक्रमवी

36

मान लें कि आपने वर्तमान में masterचेक आउट कर दिया है, तो इसका मतलब है कि इसमें किए गए बदलाव old_branchमौजूद नहीं हैं master। हालांकि, वे कर रहे हैं में मौजूद old_branchपर origin


4
हां। यह सही जवाब है! "लेकिन अभी तक विलय नहीं हुआ है HEAD", HEADयहां स्थानीय मास्टर शाखा के हेड का संदर्भ दिया गया है।
देवी

3
लेकिन मूल / पुराने_ब्रांच को मूल / मास्टर में विलय कर दिया गया है। बाद में मैंने मास्टर ब्रांच पर git पुल ओरिजनल किया। फिर भी वही त्रुटि। जीएच में यह बग नहीं है?
विक्रमवी

1
@vikramvi मान लें कि आपने masterस्थानीय रूप से जाँच कर ली है, यह तब भी हो सकता है यदि किसी भी प्रकार का SHA बदल गया हो; यानी आपने बगावत origin/old_branchकर दी origin/master। यहां तक ​​कि अगर यह तेजी से अग्रेषित किया गया था, तो इससे प्रत्येक नई प्रतिबद्ध के लिए एक नया SHA उत्पन्न होगा origin/old_branch, जिससे old_branchआपके स्थानीय masterशाखा में परिवर्तनों को खींचने के बाद मूल SHA को आपके स्थानीय में देखने के लिए एकजुट हो जाएगा । ऐसा क्यों होता है इसके लिए आप इस उत्तर और इस उत्तर को देख सकते हैं ।

8

इसका मतलब है कि आपकी स्थानीय शाखा old_branchरिमोट old_branchपर दूरस्थ शाखा के साथ अद्यतित है originलेकिन इसे उस शाखा में विलय नहीं masterकिया जाता है जिसे रेपो में मुख्य शाखा माना जाता है।

यह सिर्फ एक सावधानी है। यह आपको संकेत देता है: हो सकता है कि आपने विषय-शाखा में अपना काम किया हो और इसे मुख्य शाखा में विलय करना भूल गए हों?


अपडेट करें

आपके परिवर्तन को खोने से आपको चेतावनी देता है। उदाहरण के लिए यदि आपके पास old_branchमास्टर गिट पर नहीं है, तो आपको उस शाखा को भी हटाने की अनुमति न दें जो मास्टर को दी गई है (वैसे यह अनुमति देता है, लेकिन कुंजी के साथ -Dजो force-deleteविकल्प है)।


7
जरूरी नहीं master, लेकिन वर्तमान HEAD
फ्रोजन फ्लेम

इसलिए -D तब है जब आपने किसी दूरस्थ शाखा के साथ डिलीट की जा रही शाखा को साझा नहीं किया है (वास्तव में यह कमिट है)। जबकि चेतावनी आपको यह सूचित करने के लिए है कि आपने रिमोट के साथ शाखा (कमिट) साझा की है, लेकिन इसे सिर्फ हेड में विलय नहीं किया गया है। HEAD HEAD है, रिमोट / Refs / HEAD समान नहीं है। लेकिन कृपया मुझे सुधारे अगर मैं दूरस्थ HEAD और स्थानीय HEAD के बीच के अंतर के बारे में गलत हूँ।
एरिक

7

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.