आप वास्तव में इतिहास को फिर से लिखना चाहते हैं। प्रतिबद्धताओं के पहचानकर्ता बदल जाएंगे, और कुछ मामलों में प्रतिबद्धताओं द्वारा दिए गए परिवर्तन को बदल दिया जाएगा। तो अगर कोई मौका है कि कोई उस शाखा के पुराने संस्करण पर काम कर सकता है जिसे आप बदलना चाहते हैं, तो ऐसा करने के लिए बेहतर नहीं है। लेकिन अगर आपने इस शाखा को प्रकाशित नहीं किया है, तो नि: शुल्क महसूस करें।
आइए मान लें कि एक शाखा जिसे हम बदलना चाहते हैं उसे 'मास्टर' नाम दिया गया है, और वह बिंदु जहां हम नई शाखा शुरू करना चाहते हैं उसे 'ए' नाम दिया गया है (दिए गए उदाहरण में आप जिन नामों का उपयोग कर सकते हैं उनमें से एक है 'मास्टर ~ 6 ')।
सबसे पहले, 'ए' के लिए प्रतिबद्ध से नई शाखा बनाने के लिए, यह 'फिक्स'
$ git checkout -b fixes A
यह भी होगा शाखा 'फिक्स' वर्तमान नाम जाने की सुविधा देता है।
$ git cherry-pick A1
$ git cherry-pick A2
फिर हम शाखा से प्रतिबद्ध 'ए 1' और 'ए 2' निकालना चाहते: क्योंकि वहाँ केवल कुछ ही करता है कि हम संयुक्त राष्ट्र-चेरी ले करना चाहते हैं, हम चेरी शाखा 'फिक्स' पर उन्हें चुन सकते हैं 'गुरु'। क्योंकि वहाँ केवल कुछ ही प्रतिबद्ध हम निकालना चाहते हैं, और संभवतः कई और अधिक हम रखना चाहते हैं, हम का उपयोग eould कि के लिए 'Git --interactive rebase':
$ git rebase -i fixes master
एक संपादक के साथ सक्रिय होने का सब 'ए' प्रतिबद्ध करने के बाद 'मास्टर' में काम करता है (जो आम प्रतिबद्धता है अर्थात शाखा 'मास्टर' और शाखा 'फिक्स' का आधार आधार)।सूची इस प्रकार दिखाई देगा:, प्रतिबद्ध 'ए 1' और 'ए 2' के साथ
pick deadbee B
pick fa1afe1 C
pick a98d4ba A1
...
निकालें लाइनें (या अन्यथा रिबेस inetractive में परिवर्तन भेज) में परिवर्तन, करीब संपादक बचाने के लिए और Git को छोड़कर अन्य सभी प्रतिबद्ध पुन: लागू होता है कि आप हटा दिया है
तो फिर तुम को अंतिम रूप देने के साथ
$ git merge fixes
(Git-रिबेस फिर से लिखा शाखा 'गुरु' पर हमें छोड़) कर सकते हैं।
विलय करते हैं तो यदि मैं जिस शाखा पर था, वह मास्टर था, तो मुझे नाम मास्टर को नई शाखा 2 के सिर पर ले जाना चाहिए? समझ में आता है। धन्यवाद। – Otto
रास्ता बहुत अधिक काम है। नीचे मेरा जवाब देखें। –
हां, तब से मेरे इंटरैक्टिव रिबेजिंग कौशल में काफी सुधार हुआ है। :) – Bombe