এখনও পর্যন্ত সমস্ত উত্তর পিছনের উদ্বেগের সমাধান করে না:
মুছে ফেলার পরে যখন কয়েকশ সংশোধনী রয়েছে তখন কি কোনও কার্যকর পদ্ধতি আছে?
পদক্ষেপগুলি অনুসরণ করে তবে রেফারেন্সের জন্য আসুন নিম্নলিখিত ইতিহাসটি ধরে নিই:
[master] -> [hundreds-of-commits-including-merges] -> [C] -> [R] -> [B]
সি : অপসারণের প্রতিশ্রুতি অনুসরণ করার পরেই প্রতিশ্রুতিবদ্ধ (পরিষ্কার)
আর : প্রতিশ্রুতি অপসারণ করা হবে
বি : প্রতিশ্রুতি অপসারণের পূর্বে কেবল প্রতিশ্রুতিবদ্ধ (বেস)
"শত শত সংশোধনী" সীমাবদ্ধতার কারণে আমি নিম্নলিখিত প্রাক-শর্তগুলি ধরে নিচ্ছি:
- কিছু বিব্রতকর প্রতিশ্রুতি আছে যে আপনি চান কখনও অস্তিত্ব
- জেরো পরবর্তী প্রতিশ্রুতিগুলি রয়েছে যা প্রকৃতপক্ষে সেই শ্বাসকষ্টের উপর নির্ভর করে (প্রত্যাবর্তনের ক্ষেত্রে শূন্য দ্বন্দ্ব)
- আপনার মনে হয় না যে শত শত হস্তক্ষেপকারী কমিটির "প্রতিশ্রুতিবদ্ধ" হিসাবে আপনাকে তালিকাবদ্ধ করা হবে ('লেখক' সংরক্ষণ করা হবে)
- আপনি কখনও সংগ্রহস্থল ভাগ করেন নি
- অথবা আপনার সমস্ত ইতিহাসের উপরে সত্যিকারের যথেষ্ট প্রভাব রয়েছে যারা কখনও কখনও ইতিহাসকে ক্লোন করেছেন যে তাদের প্রতিশ্রুতি দিয়েছিলেন যে তারা আপনার নতুন ইতিহাস ব্যবহার করতে রাজি হয়েছে
- এবং আপনি ইতিহাস পুনরায় লেখার বিষয়ে চিন্তা করেন না
এটি সীমাবদ্ধতার একটি দুর্দান্ত নিয়ন্ত্রক সেট, তবে একটি আকর্ষণীয় উত্তর রয়েছে যা এই কোণার ক্ষেত্রে আসলে কাজ করে।
পদক্ষেপগুলি এখানে:
git branch base B
git branch remove-me R
git branch save
git rebase --preserve-merges --onto base remove-me
যদি সত্যিকার অর্থে কোনও দ্বন্দ্ব না থাকে, তবে এটি আর বাধা ছাড়াই এগিয়ে চলবে। যদি কোন্দল হয়, আপনি সেগুলি সমাধান করতে পারেন এবং rebase --continueবা কেবল বিব্রতকর জীবন যাপন করার সিদ্ধান্ত নিতে পারেন এবংrebase --abort ।
এখন আপনি থাকা উচিত masterআর কমিট আছে আর তাতে। দ্যsaveআপনি যখন পুনর্মিলন করতে চান শাখাটি আপনি কোথায় ছিলেন সেদিকে ইঙ্গিত করে।
আপনি কীভাবে আপনার নতুন ইতিহাসে অন্যের স্থানান্তর স্থানান্তর করতে চান তা আপনার উপর নির্ভর করে। আপনি সঙ্গে পরিচিত করা প্রয়োজন হবে stash, reset --hardএবং cherry-pick। আর তুমি মুছে দিতে পারেন base, remove-meএবং saveশাখা