শীর্ষস্থানীয় উত্তরগুলি কীভাবে একটি নির্দিষ্ট কমিট থেকে বর্তমান শাখায় পরিবর্তনগুলি প্রয়োগ করতে পারে তা বর্ণনা করে । যদি আপনি "কীভাবে একত্রীভূত হন" বলতে বোঝাতে চান তবে তাদের পরামর্শ অনুসারে কেবল চেরি-পিকটি ব্যবহার করুন।
তবে আপনি যদি আসলে একীভূত করতে চান, অর্থাৎ আপনি দুটি পিতা-মাতার সাথে একটি নতুন প্রতিশ্রুতি চান - - বর্তমান শাখায় বিদ্যমান প্রতিশ্রুতি, এবং আপনি যে প্রতিশ্রুতি থেকে পরিবর্তনগুলি প্রয়োগ করতে চেয়েছিলেন - তবে একটি চেরি-পিক তা সম্পাদন করবে না।
সত্যিকারের একত্রীকরণের ইতিহাস থাকা বাঞ্ছনীয় হতে পারে, উদাহরণস্বরূপ, যদি আপনার বিল্ড প্রক্রিয়াটি সাম্প্রতিক ট্যাগের (ব্যবহারের git describe
) উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে সংস্করণ স্ট্রিং সেট করতে গিট বংশের সুবিধা গ্রহণ করে ।
চেরি-পিকের পরিবর্তে, আপনি একটি বাস্তব করতে পারেন git merge --no-commit
এবং তারপরে আপনি চান না এমন কোনও পরিবর্তন মুছে ফেলার জন্য ম্যানুয়ালি সূচকটি সামঞ্জস্য করুন।
মনে করুন আপনি শাখায় A
রয়েছেন এবং আপনি শাখার ডগায় প্রতিশ্রুতিটি মার্জ করতে চান B
:
git checkout A
git merge --no-commit B
এখন আপনি দুটি পিতা-মাতার সাথে প্রতিশ্রুতিবদ্ধতার জন্য সেট আপ করেছেন, বর্তমান টিপটি এর সাথে সম্মতি জানায় A
এবং এরB
। তবে বি শাখায় পূর্বের কমিটিগুলি পরিবর্তন সহ আপনার নিজের চেয়ে বেশি পরিবর্তন প্রয়োগ হতে পারে। আপনাকে এই অযাচিত পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনতে হবে, তারপরে প্রতিশ্রুতিবদ্ধ।
(একত্রীকরণের আগে ওয়ার্কিং ডিরেক্টরি এবং সূচীটিকে ঠিক আগের মতো করে সেট করার সহজ উপায় হতে পারে, যাতে আপনার একটি পরিষ্কার স্লেট থাকে যা আপনি প্রথমে চাওয়া কমিটিকে চেরি-বাছাই করতে পারেন But তবে আমি কিভাবে যে পরিষ্কার স্লেট অর্জনে জানি না। git checkout HEAD
এবংgit reset HEAD
উভয় একত্রীকরণ রাষ্ট্র সরাবে, এই পদ্ধতির উদ্দেশ্য পরাজিত।)
সুতরাং ম্যানুয়ালি অযাচিত পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনুন। উদাহরণস্বরূপ, আপনি পারে
git revert --no-commit 012ea56
প্রতিটি অযাচিত প্রতিশ্রুতি জন্য 012ea56
।
আপনি জিনিসগুলি সমন্বয় শেষ করার পরে, আপনার প্রতিশ্রুতি তৈরি করুন:
git commit -m "Merge in commit 823749a from B which tweaked the timeout code"
এখন আপনার কাছে কেবলমাত্র যে পরিবর্তন আপনি চেয়েছিলেন এবং পিতৃপুরুষ গাছগুলি দেখায় যে আপনি প্রযুক্তিগতভাবে বি থেকে মিশে গিয়েছিলেন