এই লিঙ্কটি থেকে কীভাবে মার্জটি ফিরিয়ে আনতে হবে তার জন্য আমি ভাল ব্যাখ্যা পেয়েছি এবং আমি নীচের ব্যাখ্যাটি কপি করেছি এবং নীচের লিঙ্কটি যদি কাজ না করে তবে এটি কেবল সহায়ক।
কীভাবে একটি ত্রুটিযুক্ত মার্জ
অ্যালান (alan@clueserver.org) ফিরিয়ে আনতে বলা হয়েছে:
আমার একটা মাস্টার শাখা আছে। আমাদের কিছু শাখা আছে যা কিছু বিকাশকারী কাজ করছে। তারা দাবি করে যে এটি প্রস্তুত। আমরা এটিকে মাস্টার শাখায় মার্জ করি। এটি কিছুটা ভেঙে যায় তাই আমরা মার্জটি ফিরিয়ে দিই। তারা কোড পরিবর্তন করে। তারা এটি এমন একটি জায়গায় পৌঁছে যায় যেখানে তারা বলে যে এটি ঠিক আছে এবং আমরা আবার একত্রিত হয়েছি। যখন পরীক্ষা করা হয়, আমরা দেখতে পেলাম যে রিভার্টের আগে করা কোড পরিবর্তনগুলি মাস্টার শাখায় নয়, তবে কোড মাস্টার ব্রাঞ্চে রয়েছে changes এবং এই পরিস্থিতি থেকে পুনরুদ্ধার করতে সহায়তা চেয়েছিলেন।
"একীভূতকরণের প্রত্যাবর্তন" এর পরপরই ইতিহাসটি এরকম দেখাবে:
---o---o---o---M---x---x---W
/
---A---B
যেখানে A এবং B পার্শ্ব বিকাশে রয়েছে যা এতটা ভাল ছিল না, এম হ'ল মার্জ যা এই অকাল পরিবর্তনগুলিকে মূলরেখায় নিয়ে আসে, এক্স পার্শ্বের শাখা যা করেছিল এবং এরই মধ্যে মূল লাইনে তৈরি হয়েছিল তার সাথে সম্পর্কযুক্ত নয় এমন পরিবর্তনগুলি এবং ডব্লু হ'ল " মার্জ এম "" (ডাব্লু এমকে উল্টে দেখায় না?) ফেরত দিন re IOW, "diff W ^ .. W" "ডিফ -আরএম ^ .. এম" এর মতো।
মার্জ এর যেমন "রিভার্ট" এর সাথে তৈরি করা যেতে পারে:
it গিট রিভার্ট-এম 1 এম
পার্শ্ব শাখার বিকাশকারীরা তাদের ভুলগুলি ঠিক করার পরে, ইতিহাসটি দেখতে পারে:
---o---o---o---M---x---x---W---x
/
---A---B-------------------C---D
যেখানে সি এবং ডি এ এবং বি-তে কী ভাঙা হয়েছে তা ঠিক করতে পারে এবং ডাব্লু-র পরে আপনার ইতিমধ্যে মূল লাইনে কিছু অন্যান্য পরিবর্তন থাকতে পারে where
আপনি যদি আপডেট হওয়া পার্শ্বের শাখাটি (এর ডগায় ডি সহ) মার্জ করে থাকেন তবে এ বা বি-তে যে কোনও পরিবর্তন হবে ফলাফলের ফল হবেনা, কারণ সে ডাব্লু দ্বারা প্রত্যাবর্তিত হয়েছিল That এটিই অ্যালান দেখেছিল।
লিনাস পরিস্থিতি ব্যাখ্যা করে:
একটি নিয়মিত প্রতিশ্রুতি ফিরিয়ে দেওয়া কার্যকরভাবে সেই প্রতিশ্রুতিটি পূর্বাবস্থায় ফিরে আসে এবং মোটামুটি সোজা। কিন্তু প্রত্যাবর্তন মার্জ এছাড়াও কমিট পূর্বাবস্থায় ফিরিয়ে আনে ডেটা পরিবর্তন কমিট, কিন্তু এটা একেবারে উপর প্রভাব কিছুই না ইতিহাস যে একত্রীকরণ ছিল। সুতরাং মার্জটি এখনও বিদ্যমান থাকবে এবং এটি এখনও দুটি শাখাকে একসাথে যোগদান হিসাবে দেখা যাবে এবং ভবিষ্যতে সংযুক্তিগুলি সেই মার্জটিকে শেষ ভাগ করা রাষ্ট্র হিসাবে দেখবে - এবং যে রূপান্তরটি আনয়নটি মার্জটিতে ফিরিয়ে নিয়েছিল তা আদৌ কোনও প্রভাব ফেলবে না। সুতরাং একটি "রিভার্ট" ডেটা পরিবর্তনের পূর্বাবস্থায় ফিরে আসে, তবে এটি খুব বেশি হয় নাএকটি "পূর্বাবস্থায়" অর্থে যে এটি সংগ্রহস্থলের ইতিহাসে প্রতিশ্রুতিবদ্ধতার প্রভাবগুলি পূর্বাবস্থায় ফিরিয়ে আনবে না। সুতরাং যদি আপনি "পূর্বাবস্থাকে" "পূর্বাবস্থায় ফেরাতে" ভাবেন, তবে আপনি সর্বদা পুনরুদ্ধারের এই অংশটি মিস করতে যাচ্ছেন। হ্যাঁ, এটি ডেটাটি পূর্বাবস্থায় ফিরে আসে, তবে না, এটি ইতিহাসকে পূর্বাবস্থায় ফেরায় না। এমন পরিস্থিতিতে আপনি প্রথমে পূর্ববর্তী রিভার্টটি ফিরিয়ে নিতে চান, যা ইতিহাসকে এইরকম দেখায়:
---o---o---o---M---x---x---W---x---Y
/
---A---B-------------------C---D
যেখানে Y ডাব্লু এর রিভার্ট হয় এই জাতীয় "রিভার্ট অফ রিভার্ট" এর সাথে এটি করা যেতে পারে:
it গিট রিভার্ট ডব্লিউ এই ইতিহাস (ডাব্লু এবং ডব্লু ডব্লু..ওয়াই যা পরিবর্তিত হয়েছিল তার মধ্যে সম্ভাব্য দ্বন্দ্বগুলি উপেক্ষা করে) ইতিহাসে ডাব্লু বা ওয়াই না থাকার সমতুল্য:
---o---o---o---M---x---x-------x----
/
---A---B-------------------C---D
এবং পাশের শাখাটি আবার মার্জ করার ফলে পূর্ববর্তী প্রত্যর্পণ এবং প্রত্যাবর্তনের পূর্বে ফিরে আসা থেকে বিরোধ দেখা দেবে না।
---o---o---o---M---x---x-------x-------*
/ /
---A---B-------------------C---D
অবশ্যই সি এবং ডিতে হওয়া পরিবর্তনগুলি এখনও কোনও এক্স দ্বারা করা হয়েছিল তার সাথে বিরোধ করতে পারে, তবে এটি কেবল একটি সাধারণ মার্জ সংঘাত।