Git Branch को बंद कैसे करें?


112

इसलिए मैं Git + GitHub का उपयोग कर रहा हूं।

हमारी छोटी वितरित टीम में, प्रत्येक सदस्य को आवंटित की गई प्रत्येक समस्या / आवश्यकता के लिए अपनी शाखा बना रहा है।

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

अब code code, commit, code, commit, आदि ...

तो pull request, code-fixup, commit, code, commit.. आदि

और अंतिम रूप से ... पुल अनुरोध स्वीकार किया जाता है।

Woot।

लेकिन .. अब क्या? (...... अजीब ......)

क्या जिस व्यक्ति ने अपनी स्थानीय देव मशीन पर शाखा बनाई है .. उसे शाखा बंद करने की आवश्यकता है? एक सुझाव देव व्यक्ति के लिए शाखा को हटाने के लिए था (... -D ...) और फिर मास्टर की एक पुल / ताज़ा करें .. जो तब उनके सभी शाखा कोड प्राप्त करेगा।

हम्म्म्म ... पक्का नहीं - कृपया मदद करें :)


16
Git में एक शाखा एक विशिष्ट प्रतिबद्ध पर सिर्फ एक लेबल है - इसलिए मूल रूप से, अगर आपको इसकी आवश्यकता नहीं है - बस उस "शाखा" को हटा दें (उस प्रतिबद्ध पर "लेबल")। स्थानीय रूप से, बस एक करो git branch Issue#1 -dऔर बस इतना ही है - कोई भी कोड खो नहीं जाता है, बस एक लेबल आपकी रिपॉजिटरी से हटा दिया जाता है
marc_s

1
@marc_s मैं सुझाव देता हूं कि इसका एक उत्तर दें :)
KingCrunch

तो @marc_s - आप कह रहे हैं कि एक बार मानक अभ्यास करने के बाद आपने अपनी शाखा को खत्म कर दिया है .. और शाखा को धकेल दिया गया है .. हम इसे हटा देते हैं? विलय के बारे में क्या?
शुद्ध.क्रोम

@ Pure.Krome कम से कम मैंने माना, कि "पुल अनुरोध स्वीकार किया जाता है" से आपका मतलब है, कि यह पहले से ही विलय है। हाँ, निश्चित रूप से, में परिवर्तन को एकीकृत master, develop, या जो कुछ भी अपने विकास शाखा (मर्ज, rebase (स्क्वैश के बिना / के साथ), ...) के नाम पर है
KingCrunch

जब मैंने कहा कि 'पुल अनुरोध स्वीकार किया जाता है' .. जो कहीं और होता है। (यानी, डेवलपर प्रभारी जो PR'd ... सभी कोड को अनुमोदित करता है ...)। मैं सोच रहा था कि क्या मुझे अपने स्थानीय देव मशीन पर मास्टर करने के लिए स्विच करना चाहिए और एक मर्ज भी करना चाहिए।
शुद्ध। क्रोम

जवाबों:


181

हम अनुरोध करते हैं कि डेवलपर पुल अनुरोध के बारे में पूछते हुए कहे कि वे शाखा को हटाना चाहते हैं। ज्यादातर समय यही होता है। ऐसे समय होते हैं जब एक शाखा की आवश्यकता होती है (उदाहरण के लिए परिवर्तन को दूसरी रिलीज़ शाखा में कॉपी करना)।

मेरी उंगलियों ने हमारी प्रक्रिया को याद कर लिया है:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

एक शाखा काम के लिए है। एक टैग समय में एक जगह चिह्नित करता है। प्रत्येक शाखा मर्ज को टैग करके हम एक शाखा को पुनर्जीवित कर सकते हैं यदि आवश्यक हो। परिवर्तनों की समीक्षा करने के लिए शाखा टैग का उपयोग कई बार किया गया है।


8
हमने अपनी प्रक्रिया में हाल ही में बदलाव किया है। का उपयोग करना git push --tagsभारी है और सभी टैग डाउनलोड करता है। इससे आपको स्वयं के स्थानीय टैग होने में कठिनाई होती है। इसके बजाय हम git push origin branch-<feature-branch>सिर्फ एक टैग को पुश करने के लिए उपयोग करते हैं ।
बिल डोर

तो अंतिम पंक्ति, आपको सुविधा शाखा के लिए टैग नाम का उपयोग करने के लिए याद रखना होगा, जिसे हमने पहले केवल "सुविधा-शाखा>" के बजाय "शाखा- <सुविधा-शाखा>" पर सेट किया था। सही बात?
प्रीमियर ब्रोमेनोव

@PremierBromanov दूरस्थ शाखा को हटाने के लिए अंतिम पंक्ति है। याद रखने के लिए @BillDoor टैग का इस्तेमाल किया है git push --tags
देवीदे

विलक्षण लिपि !!
केके गंबा

41

हां, बस चलाकर शाखा को हटा दें git push origin :branchname। बाद में एक नया मुद्दा ठीक करने के लिए, फिर से मास्टर से शाखा करें।


3
वह दूरस्थ शाखा को हटा देगा, स्थानीय को नहीं।
किंगक्रंच

5
मुझे नहीं पता कि यह -2 क्यों मॉड्यूल्ड है, यह सही उत्तर है। उनके पास निश्चित रूप से एक दूरस्थ शाखा है, और वे इसके खिलाफ पीआर कैसे जारी कर सकते हैं?
अना बेट्स

यदि आप ऐसा करते हैं, और फिर एक गिट पुल करते हैं, तो क्या यह आपकी स्थानीय शाखा को नहीं हटाएगा, साथ ही? (संपादित करें: एनएम, मैं देख रहा हूं कि यह स्पष्ट रूप से नहीं होता है, जब तक कि आप रिमोट प्रिन्ट नहीं चलाते हैं।)
टिम किटिंग

1
क्या होता है शाखा इतिहास?
जियोसाइडिक

40

कोड को पूरा करने के बाद पहली बार शाखा को मर्ज करने के लिए फिर उस शाखा को हटा दें

git checkout master
git merge <branch-name>
git branch -d <branch-name>

और यह मेरा अपना देव मशीन पर है, है ना? मुख्य व्यक्ति जो किसी भी नए कोड को स्वीकार करता है .. उसकी मशीन कहीं और है।
शुद्ध.क्रोम

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

1
आप अपनी खुद की शाखा विलय कभी नहीं करना चाहिए जब तक आप एक मुख्य पेड़ में यह एकीकृत करने के लिए जिम्मेदार हैं। - यह सुनिश्चित करता है कि अगर दूसरे व्यक्ति ने चीजें बदल दीं तो आपको कोई समस्या नहीं होगी।
ThiefMaster
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.