2012-11-26 16 views
11

मैं GitHub पर एक आम कार्यप्रवाह में Git के साथ समस्याओं में प्रदर्शन जारी रहे।विलय नदी के ऊपर Git परिवर्तन का अनुरोध करता है

  1. मैं एक रेपो
  2. कांटा मैं कुछ परिवर्तन करने
  3. मैं रेपो अपस्ट्रीम के
  4. ज़ुल्फ़ अंगूठे जबकि नदी के ऊपर डेवलपर मेरी पुल अनुरोध पर बैठता है एक पुल अनुरोध करना।
  5. अपस्ट्रीम डेवलपर उनके रेपो
  6. वे अपने पुल अनुरोध पर नज़र डालें, लेकिन क्योंकि उनके पेड़ में परिवर्तन का यह अब सफाई से लागू होगी में परिवर्तन करता है, तो वे अपने पुल अनुरोध को अपडेट करने के लिए कहेंगे।
  7. मैं अपने रेपो में नदी के ऊपर से & मर्ज परिवर्तन लाने, संघर्ष को सुलझाने परिवर्तन
  8. मैं rebase मेरी पुल अनुरोध में करता है यह साफ सुथरा बनाने के लिए प्रतिबद्ध हैं।

यह वह समस्या है जहां समस्या उत्पन्न होती है: मेरे पुल अनुरोध में अब अपस्ट्रीम डेवलपर के अपने परिवर्तनों सहित चरण 2 और 7 के बीच हुए सभी परिवर्तन शामिल हैं। हाल ही में एक उदाहरण में यह 12,000 से अधिक लाइनों के लिए एक 10-लाइन पुल अनुरोध का विस्तार किया।

मैं कैसे पुन: लागू करना चाहिए अपने मूल उनके परिवर्तन मेरी पुल अनुरोध में हो रही बिना नदी के ऊपर रेपो के बाद के संस्करण पर करता है?

उत्तर

11

बदलें इस

7) मैं & मेरी रेपो में नदी के ऊपर से परिवर्तन मर्ज करते हैं, संघर्ष को सुलझाने, परिवर्तन के लिए प्रतिबद्ध लाने।

8) मैं rebase मेरी पुल अनुरोध में करता है यह साफ सुथरा बनाने के लिए।

को मैं नदी के ऊपर पर मेरी रेपो rebase, यह साफ सुथरा बना रही है।

आप मान लिया जाये कि नदी के ऊपर/गुरु से इस शाखा काँटेदार:

git rebase -i upstream/master 

यह वर्तमान मास्टर के शीर्ष पर अपने प्रतिबद्ध पुनः चलाने होगा।अंतिम परिणाम, किसी भी विवाद को हल करने के बाद, ऐसा होगा जैसे आपने अभी फोर्क किया था।

+2

यह स्पष्ट रूप से ऐसा करने का सही तरीका है, लेकिन मुझे पूरा यकीन है कि मैंने इसे बहुत ही विस्फोट किया है। उस ने कहा, एक फॉलो-अप चरण है जो बुरी तरह गलत हो सकता है - जब मैं अपने मास्टर को इस रीबेज को मूल मास्टर को धक्का देता हूं, तो यह महत्वपूर्ण है कि आप '--force' निर्दिष्ट करें या आप सभी को गड़बड़ कर सकते हैं एक बार फिर। – Synchro

2

यदि आप पहले से ही ऐसा कर रहे हैं, तो मैं आपके प्रश्न से नहीं बन सकता, लेकिन जब आप पुल अनुरोध के लिए प्रतिबद्ध होते हैं, तो सबसे आसान तरीका इसके लिए एक अलग शाखा बनाना है।

इस तरह, आपके पास पुल अनुरोध में क्या करना चाहिए, इसे परिभाषित करने का एक आसान तरीका है, और बाद में नए परिवर्तनों को शामिल करने के लिए पुल अनुरोध को भी अपडेट कर सकता है।

आप तो नदी के ऊपर से नए परिवर्तनों को शामिल करना चाहते हैं, तो आप उन लाने, और उस पर अपने विषय शाखा rebase कर सकते हैं।

जब GitHub में एक पुल अनुरोध करने वाले हैं, तो आप इस शाखा है, जो सुनिश्चित करें कि सही प्रतिबद्ध में खींच रहे हैं बनाता है चुन सकते हैं।

हर बार जब आप तो इस शाखा के लिए धक्का (यहां तक ​​कि -f धक्का) अद्यतन करेगा अनुरोध स्वचालित रूप से खींच।

+0

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

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