मेरे पास एक अच्छी तरह से स्थापित सॉफ्टवेयर टूलकिट है, लेकिन जिसे अक्सर छोटे बदलावों की आवश्यकता होती है (मुख्य रूप से तृतीय पक्ष उत्पादों से संगत मुद्दों का सामना करने के लिए)। अब मैं एक "नया" संस्करण (बेहतर एपीआई) तैयार करना चाहता हूं, जो मूल पर आधारित होगा - यह समय के साथ मौजूदा शाखा से अलग हो जाएगा, लेकिन कुछ सालों तक, मुझे मूल "लाइव" रखने की आवश्यकता होगी मौजूदा ग्राहकों को जो अनुकूलता के लिए इसकी आवश्यकता है। बेशक, मैं भी यह सुनिश्चित करने की आवश्यकता है कि "tweaks" "नए" संस्करण पर भी लागू हो जाएं, क्योंकि ऐसे मुद्दे (में मामले होंगे!) "नए" संस्करण पर भी लागू होते हैं।गिट में समांतर संस्करणों को प्रबंधित करने का सबसे अच्छा तरीका क्या है?
तो - मेरे आदर्श (सरल) कार्यप्रवाह होगा:
- जब 'नई' संस्करण पर काम कर - परिवर्तन केवल उस संस्करण के लिए लागू होते हैं।
- "पुराने" संस्करण पर काम करते समय, सभी परिणामी परिवर्तन (जितनी जल्दी हो सके!) दोनों संस्करणों पर लागू हो जाते हैं एक बार जब मैं उनसे खुश हूं (जब मैं प्रतिबद्ध करता हूं, जमा करता हूं या जो कुछ भी)।
मुझे एहसास है कि कभी-कभी मैन्युअल हस्तक्षेप की आवश्यकता होगी, जहां विलय विरोधाभासी होते हैं, लेकिन मैं अतीत में मैन्युअल परिवर्तनों के अनुभव के आधार पर दुर्लभ होने की अपेक्षा करता हूं।
फिलहाल, मैं वीएसएस छोड़ने के लिए देख रहा हूं (हाँ - मुझे इतनी देर तक रखने के लिए मुझ पर हंसी पर जाएं!), और मैं उम्मीद कर रहा था कि गिट यह आसान बना देगा, लेकिन अब तक, ऐसा नहीं दिखता है किसी भी "सरल" समाधान के साथ, मैंने सुझाव दिया है कि सभी को "रिबेज" के आसपास बनाया जा रहा है, जो मुझे "गलत" लगता है, क्योंकि रीबेज इतिहास को फिर से लिखने जैसी कई अन्य चीजें करने लगता है, जब मुझे बस इतना चाहिए दूसरी शाखा के परिवर्तनों के आधार पर सरल, वास्तविक "आगे बढ़ें"।
- क्या मुझे यहां कुछ याद आ रही है?
- क्या ऐसा करने के लिए कोई आसान, सही ढंग से परिभाषित तरीका है?
- क्या मैं गिट के बजाय एक अलग स्रोत नियंत्रण प्रणाली के साथ बेहतर होगा?
सभी विचारों की बहुत सराहना की!
मुझे लगता है कि आप यहां कुछ खो रहे हैं, क्योंकि 'रीबेस' को आपके उपयोग के मामले में * बिल्कुल * डिज़ाइन किया गया था। यह इतिहास को फिर से लिखता है क्योंकि यह * माना जाता है *। यदि आप इसे सही तरीके से कर रहे हैं, तो यह केवल एक विशिष्ट स्थानीय शाखा में इतिहास को फिर से लिखता है, इसलिए केंद्रीय रिपो में कोई इतिहास पुनः लिखा नहीं जाता है। –
चीजों को आसान बनाने के लिए आप सीधा-अप विलय भी कर सकते हैं, लेकिन रीबेस एक बेहतर समाधान है। –
संबंधित: http://stackoverflow.com/questions/457927/git-workflow-and-rebase-vs-merge-questions –