আমি কীভাবে গিটের একটি শাখা থেকে অন্য শাখায় একটি নির্দিষ্ট প্রতিশ্রুতি একীভূত করব?


159

আমার কাছে BranchAযা 113 এর আগে কমিট করে BranchB

তবে আমি কেবলমাত্র শেষ 10 বা তার BranchAমধ্যে মার্জ হওয়া থেকে কমিটগুলি চাই BranchB

এই কাজ করতে একটি উপায় আছে কি?


উত্তর:


233

git cherry-pick <commit>কমান্ড আপনি একটি একক (যাই হোক না কেন শাখা থেকে) কমিট এবং মূলত, আপনার কাজ শাখায় এটা রি-বেসের ফলে নিতে পারেন।

প্রো গিট বইয়ের 5 তম অধ্যায়টি আমার চেয়ে আরও ভালভাবে ব্যাখ্যা করা হয়েছে , ডায়াগ্রাম এবং এর সাথে সম্পূর্ণ। ( রিবেসিংয়ের অধ্যায়টিও ভাল পড়া is)

শেষ অবধি, চেরি-পিকিং বনাম মার্জ করা বনাম রিবাসিং সম্পর্কে অন্য একটি প্রশ্নে কিছু ভাল মন্তব্য রয়েছে


1
প্রশ্ন: বলুন প্রতিশ্রুতিবদ্ধতা Aবন্ধ হয়ে গেছে masterএবং আপনি এটিতে কিছু কাজ করেন, যার Bমাধ্যমে শিশু কমিট তৈরি করে E। বলুন Eকেবলমাত্র 1 লাইন যুক্ত হয়েছে D। আপনি যদি git cherry-pick Eমধ্যে master, এটা প্রযোজ্য সব থেকে পরিবর্তনগুলি Aমাধ্যমে Eপ্রবেশ masterশাখা, অথবা এটি নেই শুধুমাত্র থেকে পরিবর্তন প্রয়োগ Dকরার জন্য E, যথা, এটি শুধুমাত্র 1 লাইন যোগ করে master? যদি মামলাটি পূর্বের হয় তবে আমি কীভাবে পরবর্তীটি অর্জন করব? (ম্যানুয়ালি অনুলিপি এবং আটকানো
বাদে

7
গিট চেরি-পিক-এন <কমিট> আপনি যদি চেরি পিকটি না চান তবে স্বয়ংক্রিয় প্রতিশ্রুতিবদ্ধ।
বেন ফ্লিন

6

যদি ব্রাঞ্চএকে কোনও রিমোটে ঠেলাঠেলি করা না হয় তবে আপনি ব্যবহার করে কমিটগুলি পুনরায় অর্ডার করতে পারেন 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]

2

উত্স: 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 মান পাবেন, কারণ প্রয়োগের তারিখটি আলাদা। এখন আপনার ইতিহাস এর মতো দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

এখন আপনি আপনার টপিক শাখাটি সরিয়ে ফেলতে পারেন এবং যে কমিটগুলি আপনি সন্নিবেশ করতে চাননি তা বাদ দিতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.