2010-08-05 15 views
9

एक एसवीएन पृष्ठभूमि से आ रहा है: स्विचिंग की गति (कमी) की गति के कारण और शायद ही कभी शाखाओं को ट्रंक में विलय करने के लिए मैंने कभी भी ब्रांच किया था। कभी-कभी, अगर मुझे किसी वेबसाइट पर किसी समस्या को हॉटफिक्स करने की आवश्यकता होती है, तो मैं ट्रंक में परिवर्तन करता हूं (जो पिछले परिवर्तनों या नई सुविधाओं के साथ लाइव होगा) और उसके बाद उस फ़ाइल पर जाएं और बस "svn up path// फ़ाइल नाम "और यह केवल उस फ़ाइल को अद्यतन करेगा, समस्या को ठीक करेगा लेकिन बाकी फ़ाइलों को छोड़ देगा।समझना गिट चेरी-पिक

संकल्पनात्मक रूप से, यह गिट (या आवश्यक) में संभव नहीं लगता है; क्या यह संरचित स्टेजिंग और समूहीकृत है जो चेरी-पिकिंग की अनुमति देता है? इसलिए, मैं साइट के एक विशिष्ट क्षेत्र को बदल सकता हूं और इसे एसवीएन के साथ काम करने के बजाय समूह के रूप में प्रतिबद्ध कर सकता हूं, और एक दिन के काम के बारे में सोच सकता हूं और पूरे बैच को एक बार में सभी को स्पर्श कर सकता हूं?

उत्तर

10

आप इस मामले में जो करना चाहते हैं वह आपके हॉटफिक्स के लिए एक नई शाखा बना रहा है, जो सभी शाखाओं के सामान्य पूर्वजों से शाखाबद्ध है, जिन्हें ठीक करने की आवश्यकता होगी।

- X - o - o - o - o - o - o - o - o - o (master) 
    \      \ 
    o - o - o (release A) o - o (release B) 

आप एक हॉटफिक्स जो दोनों विज्ञप्ति के लिए लागू होगी बनाने की जरूरत है, तो अपने को ठीक प्रतिबद्ध प्रतिबद्ध लेबल एक्स से शुरू एक शाखा बनाने के लिए: उदाहरण के लिए, यदि आप अपने वर्तमान विकास के साथ-साथ एक जोड़े को बनाए रखा विज्ञप्ति मान लीजिए , फिर उस शाखा को सभी तीन शाखाओं में विलय करें।

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

+0

यह शानदार है। मैंने बस कुछ "गिट शाखा फू पुरानी-मर्ज-शा 1" सामान के साथ खेला और यह सिर्फ अद्भुत है। – Hans

+0

क्या "फीचरए" के लिए मास्टर ऑफ ब्रांच बनाने के लिए सबसे अच्छा अभ्यास है, फिर विषय के लिए फिर से "फ़ीचरए" को बंद करें, उन्हें तैयार होने पर फ़ीचर ए में विलय कर दें, लेकिन पूरे फीचरए तैयार होने तक मास्टर को स्पर्श न करें, जब आप मास्टर में फीचरए को मर्ज करें? अभी (svn में) अगर मैं कुछ हफ्तों लेने जा रहा हूं और हॉटफिक्स की आवश्यकता है, तो मैं अपने प्रश्न में जो कुछ वर्णित करता हूं (svn up path/to/filename) और फिर आगे बढ़ता हूं। गिट ब्रांचिंग एक "विलय अक्सर" अनुशंसा प्रतीत होती है, लेकिन अगर मैं नहीं चाहता * मास्टर * ट्रंक तैयार होने तक स्पर्श किया जाए, तो मैं वेब साइट को स्वतंत्र रूप से अपडेट कर सकता हूं। – Hans

+2

@ हंस: आप विलय नहीं करते हैं, ठीक है, अब विलय करने का समय है। आम तौर पर मास्टर एक स्थिर स्थिर शाखा है, इसलिए यदि आप चाहते थे तो आप आंशिक लेकिन स्थिर सुविधा को स्थानांतरित कर सकते हैं, लेकिन सामान्य रूप से आपको केवल पूर्ण चीज़ों को मर्ज करना चाहिए। और विभिन्न स्वादों की कई स्थिर शाखाएं रखना संभव है - एक दिए गए रिलेज़ (आपकी वेबसाइट के लिए), एक वर्तमान स्थिर परीक्षण के लिए, एक अस्थिर परीक्षण के लिए ... केवल सुनिश्चित करें कि हमेशा सही दिशा में विलय करें (विषय -> सुविधा -> मास्टर या अस्थिर -> स्थिर)। – Cascabel

संबंधित मुद्दे