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>
শাখা আপনি বর্তমানে চেক আউট করেছি, দ্বারা সমর্থিত রি-বেসের ফলে যাচ্ছে 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
।
যথার্থ: গিট রিবেস - 2 তর্ক যুক্তি দিয়ে
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
সার্জন: গিট রিবেস - 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
করে যার পিতা বা মাতা হয় পরিসীমা রি-বেসের ফলে D
পর্যন্ত H
শীর্ষে F
।
কমিটের git rebase --onto
একটি ব্যাপ্তির সাথে সিনট্যাক্সটি হয়ে যায় git rebase --onto <newparent> <oldparent> <until>
। কৌতুক এখানে স্মরণ করা হয় যে, দ্বারা সমর্থিত কমিট <until>
করা হয় অন্তর্ভুক্ত সীমার মধ্যে এবং নতুন হয়ে যাবে HEAD
পর রি-বেসের ফলে সম্পূর্ণ।