क्या मुझे विलय के बाद एक शाखा को हटाना चाहिए?


94

एक शाखा को मर्ज करने के बाद, क्या आप इसे भंडार से हटाते हैं?
हालाँकि, यह एक अच्छा अभ्यास है या नहीं?

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

आमतौर पर कैसे प्रबंधन करते हैं?

जवाबों:


72

जिन शाखाओं को विलय कर दिया गया है, उन्हें हटाने में कोई समस्या नहीं है। सभी कमिट अभी भी इतिहास में उपलब्ध हैं, और गीथहब इंटरफ़ेस में, वे अभी भी दिखाई देंगे (देखें, उदाहरण के लिए, यह पीआर जो एक कांटा को संदर्भित करता है जिसे मैंने देखा है। पीआर के स्वीकृत होने के बाद हटा दिया गया)।


आपने कहा कि सभी कमिट अभी भी इतिहास में उपलब्ध हैं। अगर मुझे github.com पर कोई प्रोजेक्ट दिखाई देता है, तो मुझे लगता है कि यह सच है। हालांकि, मैक के लिए जीथब डेस्कटॉप ऐप में, ऐसा लगता है कि आप मर्ज किए गए शाखा के लिए प्रतिबद्ध इतिहास नहीं देख सकते हैं। क्या मैं गलत हूं?
23

मुझे लगता है कि यदि आप एक git ग्राहक का उपयोग नहीं कर रहे हैं, विशेष रूप से एक gui के साथ एक का उपयोग नहीं कर रहा है, तो शाखाएं आपके लॉग को अच्छी तरह से समझने के लिए सहायक हो सकती हैं। यह है, क्योंकि आपके पास देखने के लिए एक गीथब / गीतालाब / अन्य गुइ नहीं है, शाखा नाम रखने से आपको इतिहास के अलावा इतिहास को संदर्भित करने के लिए एक सरल स्थान प्राप्त करने की अनुमति मिलती है - जो अन्यथा शाखा को हटाकर खो जाती है। कृपया कोई मुझे बताए कि क्या यह अंतिम कथन गलत है।
राज

@ राज आपके पास पहले से ही है, Merge branch fix-foo-barप्रतिबद्ध संदेशों के रूप में। कोशिश करें git log --grep="Merge branch", फिर अपनी खुद की रुचि के एंकर को छोड़ दें git checkout -b curious-change। इसके अलावा, एक शाखा को हटाते समय कुछ भी नहीं खोता है - केवल "ब्रांचेनाम → कमशॉट" पॉइंटर को छोड़कर (जो कि वास्तव में एक शाखा है, स्थानीय या दूरस्थ मायने नहीं रखता है)।
ulidtko

@ fred-foo यह एक अच्छा अभ्यास है, हालांकि सवाल का जवाब नहीं दिया जाता है। (मेरे पास एक ही सवाल है)
Esger

27

मैं निश्चित रूप से अपनी शाखाओं को साफ करने के बाद वे में विलय कर दिया गया है।

हम GitLab का उपयोग करते हैं और काम पर अनुरोध मर्ज करते हैं, इसलिए शाखाओं के बारे में ऐतिहासिक जानकारी वहां संग्रहीत होती है; मुझे अपनी शाखा सूची को अव्यवस्थित करने की आवश्यकता नहीं है, और जब मैं एक सहकर्मी के कांटे को देखता हूं, तो आदर्श रूप से मैं केवल उनके वर्तमान सक्रिय विकास की शाखाओं को देखना चाहूंगा। अगर मैं उनकी शाखा पर कुछ कोड देखने की कोशिश कर रहा हूं, तो मैं अभी कुछ सक्रिय शाखाओं के माध्यम से देखना चाहता हूं, और हर सुविधा को ठीक नहीं कर सकता और न ही उन्होंने कभी काम शुरू किया है।

ऊपर BitBucket और GitHub पर भी लागू होता है।

एक शाखा पोस्ट-मर्ज को हटाने के लिए आपके पास एकमात्र कारण हो सकता है, ताकि आप जान सकें कि कोई दी गई सुविधा समाप्त हो गई है, लेकिन मर्ज कमिट करता है (और git merge --no-ffयदि आप वास्तव में चाहते हैं) तो अप्रासंगिक हो जाएगा।


3
जाहिरा तौर पर GitHub हमेशा --no-ff करता है इसलिए हम इस तथ्य को नहीं खोएंगे कि यह उन स्थितियों में भी एक शाखा थी।
joeytwiddle

7
@joeytwiddle: मान लीजिए कि आप GitHub के अपने इंटरफ़ेस का उपयोग शाखा को मर्ज करने के लिए कर रहे हैं, हाँ!
अशरह

1


अपनी DELETED शाखाओं के सभी हाइपरलिंक URL संदर्भों का ध्यान रखें, BROKEN होगा ।

उदाहरण के लिए
यदि आप branch_feature_xअपने रेपो से शाखा को हटाते हैं तो
इस शाखा का संबंधित हाइपरलिंक URL https://github.com/username/project/tree/branch_feature_x टूट जाएगा


0

स्पष्ट करने के लिए, शाखा, दृष्टिकोण से, बस कुछ प्रतिबद्ध पर लिंक है । शाखा को हटाने से, आप गिट रेपो से आने वाले आवागमन को नहीं हटाएंगे। बेशक, अलग किए गए कमिट्स को कुछ समय के बाद गिट कचरा कलेक्टर के माध्यम से साफ किया जाएगा।

FYI करें: हम आमतौर पर बिटकॉइन इंटरफ़ेस के माध्यम से शाखाओं को मास्टर में विलय कर रहे हैं। वहां आप delete feature branch after mergeझंडा लगा सकते हैं ।

यदि आपको बहुत पुरानी शाखाओं से निपटने की आवश्यकता है, तो आप कुछ उपयोगिताओं के लिए देख सकते हैं, उदाहरण के लिए यह एक

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