मुझे यकीन है कि कैसे/अगर मैं उन प्रतिबद्ध स्क्वैश या कर सकते हैं नहीं कर रहा हूँ समूह/स्क्वैश मेरा अकेला?
स्क्वाश केवल दूसरों को नहीं करता !!
हाल ही में, मुझे एक ही समस्या का सामना करना पड़ा, मेरे पास मेरे पुल अनुरोधों पर 41 काम था, मेरी शाखा में विलय संघर्ष था और मेरा पुल अनुरोध पुराना था। मुझे अब आप जिन समस्याओं का सामना कर रहे हैं, उससे निपटना पड़ा। मैं केवल कुछ जो मैंने लागू किया है उसे छूंगा।
one of my commits
another one of my commits
one of my commits, the first one after branching
मैं स्क्वैश सुझाव है केवल अपने प्रतिबद्ध (उन सभी को आप करना चाहते हैं)।
उदाहरण के लिए, यदि आपके पास 3 काम हैं, तो आप उन्हें स्क्वैश कर सकते हैं और इंटरैक्टिव रीबेस का उपयोग कर एक में बना सकते हैं। आदेश नीचे देखें:
$ git rebase -i HEAD~n
उदाहरण के लिए, आप 3 प्रतिबद्ध छुटकारा पाने के लिए चाहते हैं: अब
$ git rebase -i HEAD~3
, आप एक इंटरैक्टिव रिबेस इंटरफेस है, जहां आप reword/पहली पर लेने के लिए प्रतिबद्ध लिख सकते हैं और पर छुटकारा पाने कर सकते हैं बाकी के। बेहतर समझने के लिए कृपया इस वीडियो को देखें।
Squashing commits
merge commit
someone else's commit
another merge commit
another person's commit
रिबेस अन्य (किसी और) करता है
यह आम समस्या हर किसी का सामना करना पड़ता है जब Git का उपयोग कर सकते हैं। कल्पना कीजिए कि आप अपने स्थानीय रेपो पर काम कर रहे हैं। थोड़ी देर के लिए काम करने के बाद, आपने कुछ काम किया है, अब आप उन्हें मूल रिमोट रिपोजिटरी में धक्का देना चाहते हैं। कूल, आपने यह git push
किया जो merge commit
समस्या कहता है।
आप जानते हैं कि किसी और ने उसी रिमोट रेपो को भी प्रतिबद्ध किया है जो अब अपडेट किया गया है। चूंकि आपका स्थानीय रेपो दूरस्थ रूप से अपडेट नहीं किया गया है, इसलिए merge commit problem
है। अब अगर हम इस समस्या को साफ़ करते हैं तो क्या होगा? क्या हम अपने स्थानीय मशीन के रेपो को अपने मूल रिमोट पर अपडेट कर सकते हैं? क्या यह संभव है?
हां, यह संभव है, आप इसे पुन: प्राप्त करके कर सकते हैं। कैसे?
जब आप ऐसा करेंगे:
git pull --rebase
यहाँ क्या हो रहा है? गिट आपके सभी स्थानीय कामों को रिवाइंड (पूर्ववत) कर देगा, रिमोट कमेट्स को खींच देगा और फिर नए खींचने वाले रिमोट कमेट्स के शीर्ष पर अपने स्थानीय कामों को फिर से चलाएगा। यदि कोई संघर्ष उत्पन्न होता है कि गिट संभाल नहीं सकता है तो आपको अपने स्थानीय कामों को फिर से चलाने के लिए मैन्युअल रूप से मर्ज करने का मौका दिया जाएगा, फिर बस git rebase --continue
चलाएं।
अधिक जानकारी के
आप अपनी शाखा विलय करने में महारत हासिल करने के लिए चाहते हैं, तो इस blog post देखते हैं?
Best (and safest) way to merge a git branch into master
वहाँ एक कारण है कि आप rebase का उपयोग कर रहे है? – ilj
@ilj अन्य टीम के सदस्य जितना संभव हो सके स्वच्छ इतिहास रखना चाहते हैं, इसलिए प्रतिबद्धता इतिहास को उचित रखना है। मैं अपने अनुभव में व्यक्तिगत रूप से एक उचित चैट इतिहास (पूरी तरह से लाइन से बाहर नहीं) – jkj2000
पर ध्यान नहीं देता यह हलकों की तुलना में अधिक समस्याएं पैदा करता है। – ilj