tl; डॉ
आपके मामले में उपयोग B
करने के शीर्ष पर रिबेस करने का सही सिंटैक्स है:A
git rebase --onto
git checkout B
git rebase --onto A B^
या उस संदर्भ से शुरू करने के शीर्ष पर रिबास जोB
A
B
संदर्भ के साथ 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
शीर्ष पर ठीक से पुन: स्थापित करने की आवश्यकता है । हम केवल अपनी कार्यशील शाखा में लाने में रुचि रखते हैं , साथ ही, हम नहीं रखना चाहते क्योंकि इसमें कुछ असंगत परिवर्तन होते हैं।F
E
F
D
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
के बाद रिबेस पूरा हो गया है।