2012-09-20 9 views
5

कुछ पृष्ठभूमि दिखा करता है:Git एकल डेवलपर w/कई मशीनों - rebase और ऊपर दो बार

  1. मैं एक ही एक साइट पर काम कर रहे डेवलपर हूँ।
  2. मैं संस्करण नियंत्रण के लिए गिट का उपयोग कर रहा हूं। कार्यालय, घर, और लैपटॉप

वर्तमान में, मैं अपने सर्वर पर एक केंद्रीय, नंगे भंडार है:

  • मैं कई कंप्यूटरों है कि मैं से काम किया है। प्रत्येक कंप्यूटर क्लोन से इस भंडार में परिवर्तन और धक्का देता है। वर्तमान में मेरे पास शाखा मास्टर और शाखा देव है। सभी काम देव शाखा में किया जाता है। मास्टर हमेशा चालू, स्थिर उत्पादन कोड है। देव में किए गए परिवर्तनों के साथ किसी भी बिंदु पर मास्टर पर परिवर्तन लागू किए जा सकते हैं।

    मेरे हर रोज कार्यप्रवाह के होते हैं:

    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 किया, लेकिन डुप्लिकेट प्रतिबद्धता छोड़ दी। जब मैंने ऐसा किया, तो सबकुछ ठीक काम करता था क्योंकि मुझे कोई संघर्ष नहीं होने की उम्मीद थी।

    तो, तुम लोगों के लिए मेरे सवाल यह है कि उन प्रतिबद्ध दो बार किया जाना आया था, और कैसे मैं भविष्य में दोबारा होने से दु: स्वप्न को रोका जा सकता है? चूंकि प्रश्न के शीर्षक से पता चलता है, मुझे लगता है कि समस्या को पुनर्जीवित करने और पुनर्निर्मित शाखा को धक्का देने के मेरे उपयोग के साथ कुछ करना है। लेकिन मैं वास्तव में बस अनुमान लगा रहा हूँ। मुझे बस कुछ मदद की ज़रूरत है जो मैंने गलत किया है।

  • उत्तर

    1

    मुझे लगता है कि आपका मॉडल अनिवार्य रूप से तीन डेवलपर्स के समान है, क्योंकि आपके पास तीन विकास मशीनें हैं। तो, आपकी देव शाखा उस अर्थ में साझा की जाती है। मैंने एसओ पर भी पढ़ा है कि साझा शाखा के रूप में पुन: प्रयास करने से मुद्दों की ओर इशारा होता है, और साझा शाखाओं को रिबेस से विलय करना बेहतर होता है। पढ़ने के बाद मैंने अच्छे परिणामों के साथ केवल निजी शाखाओं के लिए रीबेस का उपयोग करना शुरू कर दिया है। मैं एक परीक्षण भंडार बनाने और दो दृष्टिकोणों को आजमाने की सलाह देता हूं कि वे तुलना कैसे करते हैं।

    यदि मुझे अन्य SO प्रश्न मिल सकता है, तो मैं यहां एक लिंक जोड़ूंगा।

    संपादित करें:

    यहाँ यह Rebasing remote branches in Git

    बेशक

    है, इसलिए इस पर कई अलग राय हैं। :)

    +0

    उस लिंक के लिए धन्यवाद। यदि मैं आपको समझ रहा हूं, और लिंक, सही ढंग से, क्योंकि मैं सभी मशीनों पर एक ही शाखा में काम करता हूं, तो मुझे रीबेजिंग के बजाए मास्टर से किए गए परिवर्तनों में विलय करना चाहिए? क्या मुझे नियमित आधार पर मास्टर से परिवर्तन में विलय करने के बारे में चिंतित होना चाहिए? या जब तक मैं देव शाखा को मास्टर में विलय करने के लिए तैयार नहीं हूं, तब तक मुझे इसे सहेजना चाहिए? – adear11

    +0

    आपका स्वागत है। –

    +0

    इस तरह मैं लिंक को भी समझता हूं। यह एकमात्र दृष्टिकोण नहीं है, लेकिन यह एक ऐसा काम है जो अच्छी तरह से काम करता है। जहां मैं इस दृष्टिकोण का उपयोग कर रहा हूं, मैं नियमित रूप से नियमित रूप से विलय करता हूं। मैं इसे प्राथमिकता देता हूं, क्योंकि संघर्ष संकल्प आसान होता है जब यह एक बड़े संघर्ष समाधान के बजाय कई छोटे संघर्ष होते हैं, जो आम तौर पर एक लंबी अवधि के निकट होता है। –

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

    • कोई संबंधित समस्या नहीं^_^