कैसे कर सकते हैं मैं दर्द मर्ज के अलग-अलग सुविधा शाखाओं?

0

सवाल

मैं एक खुला पीआर पर एक शाखा कहा जाता है feature-b है कि जल्द ही विलय किया जा करने के लिए main. हालांकि, मैं इसे लिखा था समर्थन करने के लिए मेरे feature-a शाखा है, जो चल रही है. मैं चाहता हूँ करने के लिए काम जारी रखने पर feature-a का लाभ उठाने और काम मैं में किया था feature-b इससे पहले कि यह किया गया है के लिए विलय कर दिया main.

क्या है सबसे अच्छा तरीका के लिए मुझे ऐसा करने के लिए? हमारे विलीन हो जाती है के लिए main कर रहे हैं, कुचल, तो सभी प्रतिबद्ध पर feature-b फिर से लिखा जाएगा के रूप में एक एकल के लिए प्रतिबद्ध है जब यह विलय करने के लिए main. इसलिए, rebasing feature-a पर feature-b अब परिणाम होगा भविष्य में संघर्ष दर्द जब मैं विलय feature-a करने के लिए main क्योंकि एक ही परिवर्तन किया गया है जाएगा में अलग करता है.

क्या है सबसे अच्छा तरीका के लिए मुझे शामिल करने के लिए किए गए परिवर्तनों में feature-b में feature-a शाखा whilst कम से कम भविष्य में दर्द जब मैं अंततः मर्ज feature-a करने के लिए main?

अद्यतन

मैं आगे चला गया और:

  1. रिबेस feature-a पर feature-b
  2. और अधिक परिवर्तन (केवल 1 प्रतिबद्ध करने के लिए) feature-a whilst feature-b जा रहा था की समीक्षा की
  3. स्क्वैश-विलय कर दिया feature-b एक बार इसे मंजूरी दे दी थी (आगे कोई परिवर्तन आवश्यक है, तो feature-a पहले से ही सही है कि कोड विलय कर दिया गया था)
  4. खींच लिया, नवीनतम main और रिबेस feature-a के शीर्ष पर यह

के रूप में डर था, git की शिकायत है कि कई फ़ाइलें हैं, "दोनों संशोधित" या "दोनों जोड़ा गया". इस अकेले के लिए किया जाएगा एक छोटे से परेशान है, लेकिन तय करने के लिए आसान. क्या बनाता है यह अविश्वसनीय रूप से भ्रामक है - खासकर यदि किसी भी समय के बीतने के पारित कर दिया गया है - मर्ज टिप्पणी में फ़ाइलें ।

हालांकि दोनों main और feature-a शाखाओं है सटीक एक ही कोड में सभी फ़ाइलें, मैं सुपर कष्टप्रद व्यवहार:

  1. के लिए "दोनों कहा," फ़ाइलें विलय, टिप्पणी के लिए जोड़ रहे हैं "सिर (वर्तमान) को बदल" और "माता-पिता के #हैश (प्रतिबद्ध संदेश)". मैं मजबूर हूँ का चयन करने के लिए एक या अन्य, यहां तक कि हालांकि वे कर रहे हैं वास्तव में एक ही!
  2. "के लिए दोनों संशोधित" फ़ाइलें, यह भी बदतर है । "सिर (वर्तमान) को बदल" से पता चलता है सही कोड. हालांकि, "माता-पिता के #हैश (प्रतिबद्ध संदेश)" अनुभाग से पता चलता है के आधे कोड. फिर से, यहां तक कि हालांकि दोनों शाखाओं के सभी कोड!! मैं बच्चा तुम नहीं स्वीकार करने, "आने वाली परिवर्तन" (के रूप में लेबल करके बनाम कोड) निकाल देंगे कोड है कि दोनों शाखाओं में!

अगर मैं नहीं किया था इन परिवर्तनों जल्दी उत्तराधिकार में, मैं बुरी खो दिया है और उलझन में है के बारे में क्या git मुझे दिखा रहा है. है कि वास्तव में हुआ है कई बार अतीत में, लेकिन मैं नहीं कर सकता पर एक उंगली डाल क्या गलत हो रहा था. अब है कि मैं reproduced इस और सत्यापित व्यवहार में, मैं पूरी तरह से flummoxed के रूप में क्या करने के लिए git कर रही है और कैसे लोगों के साथ काम कर रहे हैं इस परिदृश्य.

अद्यतन 2

ठीक है, मैं एक तरह से देखने के लिए क्यों यह हो रहा था दूर करने के लिए कोड अब. यह है क्योंकि परिवर्तन में feature-b गया में कई प्रतिबद्ध है, और उन प्रतिबद्ध समाप्त किया जा रहा है कुचल जब मर्ज करने के लिए main हुई । यह कोई संदेह नहीं है के स्रोत दर्द और क्यों मैं कोशिश कर रहा हूँ बाहर आंकड़ा करने के लिए एक saner कार्यप्रवाह.

git
2021-11-23 23:26:24
1

सबसे अच्छा जवाब

0

मैं नहीं कर रहा हूँ आश्वस्त अंतिम विलय/स्क्वैश हो जाएगा । यदि एक ही परिवर्तन किया जा रहा है में अलग-अलग करता है, शायद Git कर सकते हैं कि पता लगाने और के साथ खुश हो जाएगा यह.

यदि आप करते हैं लगता है कि यह गंदा होगा हालांकि, तुम क्या कर सकता है:

  1. Rebase अपने feature-a शाखा के साथ feature-b अब, इतना है कि अपने feature-a शाखा में अब भी शामिल है को पूरा सुविधा बी और प्रगति में और सुविधा के लिए, जो है क्या आप की जरूरत करने के लिए अपने काम करते हैं ।
  2. के बाद feature-b हो जाता है में विलय कर दिया main शाखा, rebase feature-a पर प्रतिबद्ध है तुरंत पहले को कुचल प्रतिबद्ध है कि वे के लिए बने सुविधा B. यह आसानी से जाना चाहिए ।
  3. पर अपने feature-a शाखा, का उपयोग करें git reset --soft X जहां X है प्रतिबद्ध हैश के लिए कुचल प्रतिबद्ध है, वे सुविधा के लिए बी तो का उपयोग करें git commit एक बनाने के लिए प्रतिबद्ध है. अब आप एक कुचल प्रतिबद्ध जिनकी सामग्री के बराबर है वर्तमान स्थिति पर अपने काम की सुविधा A. लेकिन इस कमेटी के माता-पिता के लिए प्रतिबद्ध है कि जोड़ा सुविधा के लिए मुख्य शाखा है, इसलिए इस कमेटी के अन्तर के साथ है कि माता पिता ही होते हैं सुविधा. ए. यह ठीक है के लिए काम जारी रखने पर सुविधा के लिए, इस बिंदु पर, या बस एक अनुरोध विलय ।

वैसे, मैं बहुत आश्वस्त हूँ चीजों की जरूरत नहीं होगी किया जा करने के लिए इस गन्दा यदि आपके संगठन में इस्तेमाल किया विलीन हो जाती है के बजाय rebases करने के लिए चीजों को जोड़ने के लिए मुख्य शाखा है । और फिर वहाँ होगा के लाभ के संरक्षण के वास्तविक इतिहास का कोड आप पर काम कर रहे थे, के बजाय सिर्फ संरक्षण इस कृत्रिम इतिहास है ।

2021-11-23 23:52:54

स्पष्ट होना करने के लिए, हम का उपयोग नहीं करते rebases - हम का उपयोग कुचल करता है. और मैं कर रहा हूँ 99% यकीन है कि चीजों जाएगा गन्दा हो के रूप में मैं करने की कोशिश की है यह अतीत में है । Git हो जाता है बुरी तरह से उलझन में अलग करता है बनाने के एक ही परिवर्तन है । मैं कोशिश करने को तैयार हूँ यह फिर से और वापस रिपोर्ट :)
me--

@मुझे-मुझे यकीन है कि कुचल करता है a
evolutionxbox

Rebasing चलती का मतलब शाखा तो यह शुरू होता है एक अलग बिंदु है, जो पुनर्लेखनों के इतिहास में यह कैसे विकसित किया गया था. Squashing बदलने का मतलब पूरे शाखा में सिर्फ एक प्रतिबद्ध, discarding के इतिहास में यह कैसे विकसित किया गया था के लिए छोड़कर अंतिम परिणाम.
David Grayson

@DavidGrayson देखने के लिए कृपया अपने अद्यतन प्रश्न के लिए एक स्पष्टीकरण के व्यवहार से देखने git.
me--

ठीक है । आपके चरण 4 ("खींच नवीनतम मुख्य और रिबेस सुविधा-एक यह की चोटी पर") है, क्या कारण आप सभी दर्द तो यह नहीं है कुछ मैं करने की सिफारिश करेंगे. के बजाय कर रही है कि चरण 4 में आपके प्रश्न का प्रयास करें, चरण 2 और 3 से मेरा जवाब.
David Grayson

धन्यवाद @DavidGrayson. यह तो लगता है . . . श्रमसाध्य
me--

जैसे मैं ने कहा, मेरा जवाब में, दिक्कत यह है की वजह से कर रहे व्यक्ति को यह सब पढ़ने और squashing के बजाय बस विलय.
David Grayson

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में