tl; डॉ
आपके मामले में उपयोग Bकरने के शीर्ष पर रिबेस करने का सही सिंटैक्स है:Agit rebase --onto
git checkout B
git rebase --onto A B^
या उस संदर्भ से शुरू करने के शीर्ष पर रिबास जोBAB संदर्भ के साथ B^या उसके माता-पिता हैB~1 ।
यदि आप बीच के अंतर में रुचि रखते हैं git rebase <branch>और git rebase --onto <branch>पढ़ते हैं।
द क्विक: गिट रिबेस
git rebase <branch>शाखा आप अभी चेक आउट कर दिया है, के द्वारा संदर्भित rebase करने जा रहा है HEAD, ऊपर से नवीनतम के लिए प्रतिबद्ध है कि पहुंचा जा सकता है से <branch>लेकिन नहीं से HEAD।
रिबासिंग का यह सबसे आम मामला है और यकीनन सामने वाले को कम प्लानिंग की जरूरत होती है।
Before After
A---B---C---F---G (branch) A---B---C---F---G (branch)
\ \
D---E (HEAD) D---E (HEAD)
इस उदाहरण में, Fऔर Gऐसे कमिट हैं जो कि branchनहीं बल्कि से पहुंच योग्य हैं HEAD। कहने git rebase branchका Dमतलब यह होगा कि ब्रांचिंग प्वाइंट के बाद यह पहला कमिटमेंट है , और इसे री - लेस ( इसके माता-पिता को बदल दें ) लेटेस्ट कमेट के ऊपर branchसे HEAD, लेकिन जो नहीं है , उससे अलग है G।
सटीक: git rebase - २ तर्क सहित
git rebase --ontoआपको एक विशिष्ट प्रतिबद्ध से शुरू करने की अनुमति देता है । यह आपको इस बात पर सटीक नियंत्रण देता है कि किस चीज पर छूट दी जा रही है और कहां। यह उन परिदृश्यों के लिए है जहाँ आपको सटीक होना चाहिए।
उदाहरण के लिए, आइए कल्पना करें कि हमें शुरुआत से HEADशीर्ष पर ठीक से पुन: स्थापित करने की आवश्यकता है । हम केवल अपनी कार्यशील शाखा में लाने में रुचि रखते हैं , साथ ही, हम नहीं रखना चाहते क्योंकि इसमें कुछ असंगत परिवर्तन होते हैं।FEFD
Before After
A---B---C---F---G (branch) A---B---C---F---G (branch)
\ \
D---E---H---I (HEAD) E---H---I (HEAD)
इस मामले में, हम कहेंगे git rebase --onto F D। इसका मतलब है की:
HEADजिनके माता-पिता Dशीर्ष पर हैं , वे पहुंच से बाहर होने के लिए प्रतिबद्ध करें F।
दूसरे शब्दों में, माता पिता को बदलने की Eसे Dकरने के लिए F। का सिंटैक्स git rebase --ontoहै git rebase --onto <newparent> <oldparent>।
एक और परिदृश्य जहां यह काम आता है जब आप एक इंटरैक्टिव रिबेस करने के लिए बिना वर्तमान शाखा से कुछ कमिट्स को जल्दी से निकालना चाहते हैं :
Before After
A---B---C---E---F (HEAD) A---B---F (HEAD)
इस उदाहरण में, निकालने के लिए Cऔर Eअनुक्रम से आप कहेंगे git rebase --onto B E, या जहां पुराने माता-पिता थे HEAD, Bवहां से रिबेस करें E।
सर्जन: git rebase - 3 तर्कों के साथ पोंटो
git rebase --ontoपरिशुद्धता के संदर्भ में एक कदम आगे जा सकते हैं। वास्तव में, यह आपको किसी अन्य के शीर्ष पर आने वाली एक अनियंत्रित श्रेणी को फिर से बनाने की अनुमति देता है ।
यहाँ एक उदाहरण है:
Before After
A---B---C---F---G (branch) A---B---C---F---G (branch)
\ \
D---E---H---I (HEAD) E---H (HEAD)
इस मामले में, हम E---Hशीर्ष सीमा पर सटीक सीमा को फिर से भरना चाहते हैं, यह देखते हुए कि वर्तमान में Fकहां HEADइंगित कर रहा है। हम ऐसा करके कह सकते हैं git rebase --onto F D H, जिसका अर्थ है:
करता है जिसकी मूल की सीमा rebase Dअप करने के लिए Hकी चोटी पर F।
git rebase --ontoएक सीमा के साथ वाक्य रचना तब बन जाती है git rebase --onto <newparent> <oldparent> <until>। चाल यहाँ याद है कि द्वारा संदर्भित प्रतिबद्ध <until>है शामिल रेंज में और नए बन जाएगा HEADके बाद रिबेस पूरा हो गया है।