कुछ पृष्ठभूमि दिखा करता है:Git एकल डेवलपर w/कई मशीनों - rebase और ऊपर दो बार
- मैं एक ही एक साइट पर काम कर रहे डेवलपर हूँ।
- मैं संस्करण नियंत्रण के लिए गिट का उपयोग कर रहा हूं। कार्यालय, घर, और लैपटॉप
वर्तमान में, मैं अपने सर्वर पर एक केंद्रीय, नंगे भंडार है:
मेरे हर रोज कार्यप्रवाह के होते हैं:
git checkout dev
//pull in changes from remote
git pull
//make and commit changes as need throughout the day
git add -u
git commit
//these steps only happens when I know master has changed
git checkout master
git pull
git checkout dev
git rebase master //to get changes to master into dev branch
//push changes to central remote at end of day
git push
मेरा मानना है कि यह एक एकल डेवलपर के लिए एक काफी मानक कार्यप्रवाह होना चाहिए।
अब मेरे प्रश्न के उद्देश्य से, रास्ते से बाहर सभी के साथ। मैंने हाल ही में एक परिस्थिति में भाग लिया है कि मुझे यकीन नहीं है कि भविष्य में इसे कैसे व्यवस्थित किया जाए और इसे कैसे रोकें। वर्तमान में, मेरी देव शाखा एक लंबी दौड़ वाली देव शाखा है जो साइट के एक हिस्से का एक प्रमुख पुनर्लेख है। ऐसे में, यह कुछ महीनों के लिए विकास में रहा है। जबकि मैं यह काम कर रहा हूं, मैं भी मास्टर में छोटे बदलाव/बग फिक्स कर रहा हूं। जब मैं मास्टर में बदलावों में से एक को समाप्त करता हूं, तो मैं परिवर्तन प्राप्त करने के लिए मास्टर पर देव को दोबारा दूंगा, फिर उन्हें केंद्रीय रेपो तक दबाएं। यह ठीक काम कर रहा है।
हालांकि, मैंने कुछ दिनों पहले मास्टर में बदलाव किया - लगभग एक महीने में ऐसा पहला बदलाव। जब मैं पश्चाताप करने गया, तो सभी नरक ढीले टूट गए। मैं उन फ़ाइलों पर विलय संघर्ष कर रहा था जो मास्टर में मौजूद नहीं थे, और मुझे एक ही फाइलों में एक ही तरह के संघर्ष मिल रहे थे। सभी संघर्षों को हल करने की कोशिश कर रहे दिन के बेहतर हिस्से को खर्च करने के बाद, मैंने अंततः छोड़ दिया।
आज सुबह, मैं फिर से कोशिश करने के लिए चला गया है, लेकिन इससे पहले कि मैं शुरू कर दिया मैं परियोजना इतिहास प्रतिबद्ध की जांच की और कुछ नहीं बल्कि अजीब पाया। मैंने पाया कि लगभग 15 कामों को दोहराया गया था। यह 07/12/2012 - 08/24/2012 से सभी कामों को दिखाता है। फिर, मेरे पास फिर से सूचीबद्ध एक ही काम था, सभी अलग-अलग SHA Hashes के साथ। मैंने तब तक यह ध्यान नहीं दिया जब तक कि मैंने देखा कि काम की तिथियों को क्रोनोलॉजिकल क्रम में सूचीबद्ध नहीं किया गया था, लेकिन फिर अचानक यह अतीत में वापस कूद गया।
हल करने के लिए मैंने एक और rebase किया, लेकिन डुप्लिकेट प्रतिबद्धता छोड़ दी। जब मैंने ऐसा किया, तो सबकुछ ठीक काम करता था क्योंकि मुझे कोई संघर्ष नहीं होने की उम्मीद थी।
तो, तुम लोगों के लिए मेरे सवाल यह है कि उन प्रतिबद्ध दो बार किया जाना आया था, और कैसे मैं भविष्य में दोबारा होने से दु: स्वप्न को रोका जा सकता है? चूंकि प्रश्न के शीर्षक से पता चलता है, मुझे लगता है कि समस्या को पुनर्जीवित करने और पुनर्निर्मित शाखा को धक्का देने के मेरे उपयोग के साथ कुछ करना है। लेकिन मैं वास्तव में बस अनुमान लगा रहा हूँ। मुझे बस कुछ मदद की ज़रूरत है जो मैंने गलत किया है।
उस लिंक के लिए धन्यवाद। यदि मैं आपको समझ रहा हूं, और लिंक, सही ढंग से, क्योंकि मैं सभी मशीनों पर एक ही शाखा में काम करता हूं, तो मुझे रीबेजिंग के बजाए मास्टर से किए गए परिवर्तनों में विलय करना चाहिए? क्या मुझे नियमित आधार पर मास्टर से परिवर्तन में विलय करने के बारे में चिंतित होना चाहिए? या जब तक मैं देव शाखा को मास्टर में विलय करने के लिए तैयार नहीं हूं, तब तक मुझे इसे सहेजना चाहिए? – adear11
आपका स्वागत है। –
इस तरह मैं लिंक को भी समझता हूं। यह एकमात्र दृष्टिकोण नहीं है, लेकिन यह एक ऐसा काम है जो अच्छी तरह से काम करता है। जहां मैं इस दृष्टिकोण का उपयोग कर रहा हूं, मैं नियमित रूप से नियमित रूप से विलय करता हूं। मैं इसे प्राथमिकता देता हूं, क्योंकि संघर्ष संकल्प आसान होता है जब यह एक बड़े संघर्ष समाधान के बजाय कई छोटे संघर्ष होते हैं, जो आम तौर पर एक लंबी अवधि के निकट होता है। –