আমার কাছে BranchA
যা 113 এর আগে কমিট করে BranchB
।
তবে আমি কেবলমাত্র শেষ 10 বা তার BranchA
মধ্যে মার্জ হওয়া থেকে কমিটগুলি চাই BranchB
।
এই কাজ করতে একটি উপায় আছে কি?
আমার কাছে BranchA
যা 113 এর আগে কমিট করে BranchB
।
তবে আমি কেবলমাত্র শেষ 10 বা তার BranchA
মধ্যে মার্জ হওয়া থেকে কমিটগুলি চাই BranchB
।
এই কাজ করতে একটি উপায় আছে কি?
উত্তর:
git cherry-pick <commit>
কমান্ড আপনি একটি একক (যাই হোক না কেন শাখা থেকে) কমিট এবং মূলত, আপনার কাজ শাখায় এটা রি-বেসের ফলে নিতে পারেন।
প্রো গিট বইয়ের 5 তম অধ্যায়টি আমার চেয়ে আরও ভালভাবে ব্যাখ্যা করা হয়েছে , ডায়াগ্রাম এবং এর সাথে সম্পূর্ণ। ( রিবেসিংয়ের অধ্যায়টিও ভাল পড়া is)
শেষ অবধি, চেরি-পিকিং বনাম মার্জ করা বনাম রিবাসিং সম্পর্কে অন্য একটি প্রশ্নে কিছু ভাল মন্তব্য রয়েছে ।
A
বন্ধ হয়ে গেছে master
এবং আপনি এটিতে কিছু কাজ করেন, যার B
মাধ্যমে শিশু কমিট তৈরি করে E
। বলুন E
কেবলমাত্র 1 লাইন যুক্ত হয়েছে D
। আপনি যদি git cherry-pick E
মধ্যে master
, এটা প্রযোজ্য সব থেকে পরিবর্তনগুলি A
মাধ্যমে E
প্রবেশ master
শাখা, অথবা এটি নেই শুধুমাত্র থেকে পরিবর্তন প্রয়োগ D
করার জন্য E
, যথা, এটি শুধুমাত্র 1 লাইন যোগ করে master
? যদি মামলাটি পূর্বের হয় তবে আমি কীভাবে পরবর্তীটি অর্জন করব? (ম্যানুয়ালি অনুলিপি এবং আটকানো
যদি ব্রাঞ্চএকে কোনও রিমোটে ঠেলাঠেলি করা না হয় তবে আপনি ব্যবহার করে কমিটগুলি পুনরায় অর্ডার করতে পারেন rebase
এবং সহজভাবে merge
। এটা ব্যবহার করা বাঞ্ছনীয় এর merge
উপর rebase
যখন সম্ভব, কারণ এটি ডুপ্লিকেট করে তৈরি করে না।
git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]
উত্স: https://git-scm.com/book/en/v2/ ডিস্ট্রিবিউটেড- গিট- মেনটেনিং- এ- প্রজেক্ট#Integrating- অবদান- ওয়ার্ক
পরিচিত কাজকে এক শাখা থেকে অন্য শাখায় সরানোর অন্য উপায় হ'ল চেরি-বাছাই। গিটের একটি চেরি-পিক একক কমিটের রিবেসের মতো। এটি এমন প্যাচ নেয় যা প্রতিশ্রুতিবদ্ধভাবে প্রবর্তিত হয়েছিল এবং আপনি বর্তমানে যে শাখায় আছেন সেটিতে এটি পুনরায় প্রয়োগ করার চেষ্টা করে। যদি আপনার কোন টপিক শাখায় প্রচুর কমিট থাকে এবং আপনি কেবলমাত্র তাদের মধ্যে একটি সংহত করতে চান, বা যদি আপনার কেবল একটি বিষয় শাখায় প্রতিশ্রুতিবদ্ধ থাকে এবং আপনি রিবেস চালানোর চেয়ে চেরি-বাছাই করতে পছন্দ করেন তবে এটি কার্যকর। উদাহরণস্বরূপ, ধরুন আপনার কাছে এমন একটি প্রকল্প রয়েছে যা দেখে মনে হচ্ছে:
আপনি যদি মাস্টার শাখায় কমিট E43a6 টানতে চান তবে আপনি চালাতে পারেন
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
এটি E43a6 তে প্রবর্তিত একই পরিবর্তনকে টানছে, তবে আপনি একটি নতুন প্রতিশ্রুতিবদ্ধ SHA-1 মান পাবেন, কারণ প্রয়োগের তারিখটি আলাদা। এখন আপনার ইতিহাস এর মতো দেখাচ্ছে:
এখন আপনি আপনার টপিক শাখাটি সরিয়ে ফেলতে পারেন এবং যে কমিটগুলি আপনি সন্নিবেশ করতে চাননি তা বাদ দিতে পারেন।