কখনও কখনও আমাদের একটি প্রবাহ থাকে যা আমাদের উপর নির্ভর করে একটি শাখাটিকে রিবাজড / রিবাউন্ড করে। এটি একটি বড় সমস্যা হতে পারে - আমরা যদি নিচে প্রবাহিত হই তবে আমাদের জন্য অগোছালো দ্বন্দ্ব সৃষ্টি করে causing
যাদুটি হ'ল git pull --rebase
একটি সাধারণ গিট টান হ'ল আলগাভাবে বলা, এরকম কিছু (আমরা এই সমস্ত উদাহরণে রিমোট নামে পরিচিত একটি রিমোট এবং একটি শাখা ব্যবহার করব):
# assume current checked out branch is "foo"
git fetch origin
git merge origin/foo
প্রথম নজরে, আপনি মনে করতে পারেন যে গিট টান --rebase ঠিক এটি করে:
git fetch origin
git rebase origin/foo
তবে এগুলি কার্যকর হবে না যদি প্রবাহিত রিবাজে কোনও "স্কোয়াশিং" জড়িত (যার অর্থ কমিটগুলির প্যাচ-আইডিগুলি কেবল তাদের ক্রম নয়, পরিবর্তিত হয়েছিল)।
যার অর্থ গিট টান --rebase এর থেকে কিছুটা বেশি করতে হবে। এটি কী করে এবং কীভাবে তার একটি ব্যাখ্যা এখানে।
আসুন বলি যে আপনার প্রারম্ভিক বিন্দুটি এটি:
a---b---c---d---e (origin/foo) (also your local "foo")
সময় কেটে যায় এবং আপনি নিজের "ফু" শীর্ষে কিছু প্রতিশ্রুতি করেছেন:
a---b---c---d---e---p---q---r (foo)
এদিকে, অসামাজিক ক্রোধের উপযুক্ততায়, প্রবাহের রক্ষণাবেক্ষণকারী তার "ফু" কে কেবল প্রত্যাবর্তনই করেনি, এমনকি তিনি স্কোয়াশ বা দু'টি ব্যবহার করেছেন। তাঁর প্রতিশ্রুতিবদ্ধ শৃঙ্খলা এখন এইরকম দেখাচ্ছে:
a---b+c---d+e---f (origin/foo)
এই সময়ে একটি গিট টান বিশৃঙ্খলা হতে পারে। এমনকি একটি গিট আনা; গিট রিবেস উত্স / ফু এটিকে কাটবে না, কারণ একদিকে "বি" এবং "সি" করে এবং অন্যদিকে "বি + সি" করে, বিরোধ করবে। (এবং একইভাবে ডি, ই এবং ডি + ই সহ)।
কি git pull --rebase
করে, এই ক্ষেত্রে, হল:
git fetch origin
git rebase --onto origin/foo e foo
এটি আপনাকে দেয়: