বিষয় সমাধান
পোস্ট করা প্রশ্নের উত্তর দেওয়ার সঠিক আদেশটি নিম্নলিখিত যে কোনও একটি হতে পারে (ধরে নেওয়া শাখা topic
ইতিমধ্যে চেক আউট হয়ে গেছে):
git rebase --onto B master
git rebase --onto master~1 master
git rebase --onto B A
git rebase --onto B C
git rebase --onto B
যদি topic
চেক আউট না করা হয়, আপনি কেবল topic
কমান্ডটিতে (শেষটি ব্যতীত) এর মতো যুক্ত করুন:
git rebase --onto B master topic
বিকল্পভাবে, প্রথমে এর সাথে শাখাটি পরীক্ষা করে দেখুন:
git checkout topic
টার্গেট কমিটের যে কোনও স্ট্রিং অফ কমিটকে রিবেস করুন
ডকুমেন্টেশন থেকে আঁকানো আমাদের যে কমান্ডের প্রয়োজন হবে তার মূল ফর্মটি হ'ল:
git rebase --onto <Target> [<Upstream> [<Branch>]]
<Branch>
alচ্ছিক এবং এটি যা করে তা হ'ল বাকী কমান্ডটি কার্যকর করার আগে নির্দিষ্ট শাখাটি পরীক্ষা করে। আপনি যে শাখাটি পুনরায় চালু করতে চান তা যদি আপনি ইতিমধ্যে পরীক্ষা করে ফেলেছেন তবে আপনার এটির দরকার নেই। নোট করুন যে <Upstream>
নির্দিষ্ট করতে <Branch>
বা গিটের জন্য আপনাকে অবশ্যই নির্দিষ্ট করা আবশ্যক মনে করবে আপনি নির্দিষ্ট করে দিচ্ছেন <Upstream>
।
<Target>
প্রতিশ্রুতিবদ্ধ আমরা আমাদের প্রতিশ্রুতিবদ্ধ স্ট্রিং সংযুক্ত করব। কোনও শাখার নাম সরবরাহ করার সময়, আপনি কেবল branch শাখার প্রধান প্রতিশ্রুতি নির্দিষ্ট করে দিচ্ছেন। <Target>
যে কোনও প্রতিশ্রুতি থাকতে পারে যা সরিয়ে নেওয়া কমিটগুলির স্ট্রিংয়ের মধ্যে থাকবে না। উদাহরণ স্বরূপ:
A --- B --- C --- D master
\
\-- X --- Y --- Z feature
সমগ্র বৈশিষ্ট্য শাখা স্থানান্তর করতে, আপনাকে নির্বাচন করতে পারবেন না X
, Y
, Z
, অথবা feature
যেমন <Target>
ঐ যেহেতু সব গ্রুপ ভিতরে করে স্থানান্তরিত হচ্ছে হয়।
<Upstream>
এটি বিশেষ কারণ এটি দুটি ভিন্ন জিনিস বোঝাতে পারে। যদি এটি একটি প্রতিশ্রুতিবদ্ধ যা পরীক্ষিত শাখার পূর্বপুরুষ, তবে এটি কাটা পয়েন্ট হিসাবে কাজ করে। উদাহরণস্বরূপ আমি প্রদান করা, এই কিছু যে হয় না C
, D
অথবা master
। <Upstream>
চেক আউট শাখার প্রধানটি সরানো হবে যতক্ষণ না পরে সমস্ত কমিট করে ।
তবে, যদি <Upstream>
পূর্বপুরুষ না হয়, তবে গিটটি নির্দিষ্ট প্রতিশ্রুতি থেকে শৃঙ্খলার ব্যাক আপ করবে যতক্ষণ না চেক আউট শাখার সাথে কোনও সাধারণ পূর্বপুরুষের সন্ধান হয় (এবং যদি এটি খুঁজে না পাওয়া যায় তবে অব त्याহিত)। আমাদের ক্ষেত্রে, একটি ইন <Upstream>
এর B
, C
, D
, অথবা master
হবে সব ফলাফলের কমিট মধ্যে B
কাটা পয়েন্ট হিসাবে পরিবেশন করছে। <Upstream>
এটি নিজেই একটি alচ্ছিক কমান্ড এবং যদি এটি নির্দিষ্ট না করা হয়, তবে গিটটি চেক আউট শাখার পিতামাতার দিকে নজর দেয় যা প্রবেশের সমতুল্য master
।
এখন যে গিটটি এই কমিটগুলি কেটে ফেলেছে তা নির্বাচন করেছে এবং এটি <Target>
ইতিমধ্যে টার্গেটে প্রয়োগ করা যেকোনোটি এড়িয়ে চলেছে to
আকর্ষণীয় উদাহরণ এবং ফলাফল
এই সূচনা পয়েন্টটি ব্যবহার করে:
A --- B --- C --- D --- E master
\
\-- X --- Y --- Z feature
git rebase --onto D A feature
করে প্রয়োগ করা হবে B
, C
, X
, Y
, Z
সমর্পণ করতে D
এবং কুঁদন শেষ B
এবং C
কারণ তারা ইতিমধ্যে প্রয়োগ করা হয়েছে।
git rebase --onto C X feature
প্রতিশ্রুতিগুলি কার্যকরভাবে মুছে ফেলা Y
এবং
প্রতিশ্রুতিবদ্ধদের প্রয়োগ করেZ
C
X
git checkout B
দৌড়ানোর আগে করার চেষ্টা করেছেনgit rebase
?