2017-08-23 7 views
11

मेरे पास मेरी फीचर शाखा है जो लगभग 30 या उससे अधिक काम करती है। इस बीच विकास शाखा में कुछ अन्य सुविधाओं को अन्य डेवलपर्स से धक्का दिया गया है। इसलिए, हर एक नई सुविधा विकास पर प्रकाशित हुआ है, मैं करने के लिए कहा रहा हूँ: मेरी सुविधा शाखा परकम से कम संभावित संघर्षों के साथ गिट में विकास शाखा में अपनी फीचर शाखा को कैसे रीबेस करें?

  1. रिबेस विकास शाखा
  2. हल संघर्ष यदि कोई
  3. अपनी सुविधा शाखा में विकासशील जारी

समस्या

दूसरा चरण चिकन की गर्दन है। इसे रिब्रेस करने पर मुझे के लिए प्रत्येक उस शाखा के प्रतिबद्धता के लिए संघर्ष देता है। यह वास्तव में पुनरावृत्ति और अनावश्यक है। ध्यान दें, मैं हमेशा अपनी शाखा में अपने काम को प्रगति पर बना रहा हूं, इसलिए मैं हमेशा विकास शाखा को पुनर्जीवित नहीं कर सकता।

मैंने क्या प्रयास किया?

    squash करने के लिए
  1. और संभव के रूप में ज्यादा के रूप में मेरे प्रतिबद्ध को कम (लेकिन यह कम से कम में मदद करता है, छुटकारा पाने के लिए कोई बात नहीं है के रूप में समय की सबसे)
  2. परिवर्तन के लिए जा रहा पर मेरे stash करने के लिए, और विकास rebase और फिर unstash मेरे परिवर्तन (लेकिन यहां, मुझे संघर्ष भी मिलते हैं)
  3. रीबेस के साथ -preserve-merges का उपयोग करना। (लेकिन यहाँ हर कोई चिल्लाता है कि इस का उपयोग करते हुए पूरी तरह से हतोत्साहित है)

तो, कम से कम संघर्षों के साथ सुविधा शाखा पर विकास रिबेसिंग जब सुविधा शाखा में ही कई करता है से निपटने के लिए इष्टतम दृष्टिकोण है। मैं एक नया हूं, और इसलिए सहायक स्पष्टीकरण (या लिंक) के साथ एक उत्तर आगे बढ़ने में बहुत मददगार होगा।

उत्तर

7

वर्कफ़्लो ध्वनि (रीबेस) है।
लेकिन विवादों को हर बार बार-बार हल नहीं किया जाना चाहिए।

के लिए, आप git rerere है: यह (git config --global rerere.enabled true) को सक्रिय करने, संघर्ष एक आखिरी बार हल (या एक manual re-training, या use contrib/rerere-train.sh करते हैं), और अपने अगले रिबेस अपने अगले रिबेस में उन संघर्ष समाधान resuse होगा।

+0

वाह ने कभी भी पुन: प्रयास के बारे में नहीं सुना .. यह सुनिश्चित करने के लिए प्रयास करें ... धन्यवाद –

+1

@ करणदेसाई जैसा कि मैंने उल्लेख किया है, आप अपने विलय संघर्षों को हल करने के लिए पुन: प्रयास करने के लिए पुन: प्रयास कर सकते हैं। एक बार रीट्रेनिंग करने के बाद, आप एक बार फिर से प्रयास कर सकते हैं: कोई और संघर्ष नहीं हो सकता है (पिछले काम पर) – VonC

3

मैं को सुझाव दूंगा कि आपकी सुविधा को छोटा (एक या दो दिन) रखें, और आपकी सुविधा शाखा भी छोटी होगी। एक और तरीका हर बार किसी भी चीज को विकास शाखा में धक्का नहीं दिया जाता है, लेकिन केवल कभी-कभी, या विलय से पहले एक बार। फिर आपको सुविधा को छोटा रखने की आवश्यकता है या आपके पास एक ही समय में बहुत सारे conflics होंगे।

अपने प्रश्न के बारे में, आप एक रिबेस में conflics की संख्या को कम नहीं कर सकते हैं। यदि conflics हैं तो आप उनसे नहीं बच सकते हैं।

लेकिन एक तरीका है कि गिट आपकी मदद कर सकता है: मेरा सुझाव है कि आप rerere सक्षम करें जो कि रिकॉर्ड किया गया है पुन: उपयोग करें।इसके साथ, गिट रिकॉर्ड करता है कि आप एक संघर्ष को कैसे हल करते हैं और अगली बार जब संघर्ष प्रकट होता है, तो संकल्प को दोबारा लागू किया जाता है ताकि आप पहले से ही संघर्ष को हल कर सकें। यह आपके वर्कफ़्लो को तेज करेगा।

आप rerere विश्व स्तर पर

git config --global rerere.enabled true 
+0

वाह पुनरावृत्ति दुर्लभ नहीं है, इसका मतलब है (केवल मुझे यह नहीं पता था)। पिछले सुझाव में भी वही सुझाव था। इसे वैश्विक रूप से सक्षम करने के लिए वाक्यविन्यास जोड़ने के लिए +1 .. निश्चित रूप से प्रयास करें –

0

साथ सक्षम कर सकते हैं Git करने की कोशिश करो सुविधा शाखा में विकास शाखा से विलय से पहले आप Git rebase प्रदर्शन करते हैं। यह रास्ते में अधिक जानकारीपूर्ण होगा।

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