हमारे पास एक बेस सिस्टम है जो प्रत्येक ग्राहक के लिए अनुकूलित किया गया है। आधार अपने स्वयं के भंडार में रहता है, और प्रत्येक ग्राहक अपने स्वयं के भंडार में रहता है (मूल रूप से आधार से क्लोन)।गिट को अत्यधिक संघर्ष के कारण रिबेस के साथ खींचें। मैं अपने वर्कफ़्लो को कैसे ठीक कर सकता हूं?
लक्ष्य लक्ष्य पर बग फिक्स/फीचर्स जोड़ने की क्षमता है, जिसे मांग पर ग्राहकों को प्रचारित किया जा सकता है।
अब तक कार्यप्रवाह इस प्रकार किया गया है:
- मेक करता/विषय शाखाओं आधार फिक्स/सुविधाओं के लिए: (आधार पर, मास्टर)
git commit -m "Fix admin typo"
- ग्राहक में उन परिवर्तनों को सम्मिलित करें: (क्लाइंट, मास्टर पर)
git merge base/master
। जाहिर है, इसमें आधार और ग्राहक के अनुकूलन के बीच किसी भी विवाद को ठीक करना शामिल है। - क्लाइंट की उत्पत्ति में विलय को पुश करें: (क्लाइंट, मास्टर पर)
git push origin master
- हमारा सम्मेलन रीबेस (इतिहास को पढ़ने योग्य रखने के लिए) को खींचने के लिए किया गया है। तो, फिर किसी भिन्न डेवलपर ग्राहक परियोजना पर काम कर होगा (मास्टर क्लाइंट पर,)
git pull --rebase origin master
यह इस बात है कि हम उस पुल/रिबेस के साथ महत्वपूर्ण समस्याओं तक पहुँचने में है। क्लाइंट में आधार से विलय के बाद डेवलपर्स को पुल/रीबेस में संघर्ष मिलता है। और यह केवल कुछ संघर्ष नहीं है, यह बहुत से हैं (कई कामों को फिर से चलाने के लिए?), और अक्सर कोड जो विशेष डेवलपर कभी भी छुआ नहीं। मुझे लगता है कि यह अनुचित और असंभव है।
यहां सबसे अच्छा समाधान क्या है?
मेरा एकमात्र विचार है कि मैला खींचने और कठोर और पढ़ने-पढ़ने वाले लॉगों से निपटने के दौरान रिबेस का उपयोग करना बंद करना है, लेकिन मुझे ऐसा करने की ज़रूरत नहीं है। ये ग्राहक परियोजनाएं वर्षों से रह सकती हैं, और मैं भविष्य में बेस सिस्टम विलय से कुछ समझने में सक्षम होना चाहता हूं।
आप 'मूल/मास्टर' पर धक्का देते हैं और फिर तुरंत वहां से खींचते हैं? क्या ऐसा कुछ नहीं करना चाहिए? – svick
@svick - इस उदाहरण में, एक देव विलय को धक्का देता है, दूसरा खींचता है – Ben