এটি করার জন্য "আশীর্বাদী" উপায় কিনা তা নিশ্চিত নই, তবে "জোর করে চাপ" বা এর মতো স্থূল কিছু না করে একই সমস্যাটি সমাধান করার জন্য আমি এখানে যা করেছি।
আসুন ধরে নেওয়া যাক আপনার ইতিহাসটি এরকম কিছু দেখাচ্ছে (এবং এম হ'ল ফ্লাবড মার্জ):
-A--B--C--M (master points here)
\ /
D----E
git checkout -b merge_fix <commit ID E>
কোনও ভুল করার আগে রানিং একটি শাখা তৈরি করে:
-A--B--C--M (master points here)
\ /
D----E (HEAD and merge_fix point here)
এখন, আমাদের নতুন শাখায় মার্জটি আবার করা যাক। আমরা কেবল মার্জ করতে পারি না master
, সুতরাং আমাদের খারাপ সংশ্লেষের আগে আমাদের ম্যানুয়ালি প্রতিশ্রুতিটি বেছে নিতে হবে: git merge <commit ID C>
আপনি গতবারের মতো একই ভুল করবেন না!
-A--B--C--M (master points here)
\ X
D----E-G (HEAD and merge_fix point here)
এই প্রতিশ্রুতিটি G
দেখতে দেখতে দেখতে দুর্দান্ত, এখন আমরা master
শাখার শীর্ষের সাথে সিঙ্ক আপ করতে চাই । এই কমান্ডটি গিটকে মাস্টারটিতে করা পরিবর্তনগুলি উপেক্ষা করতে এবং আমাদের পরিবর্তনগুলিকে একীভূত হওয়ার ফলাফল হিসাবে বাধ্য করতে বলছে:git merge -s ours master
-A--B--C--M (master points here)
\ X \
D----E-G--H (HEAD and merge_fix point here)
শেষ অবধি, (আবারও ধরে নিলাম যে প্রতিশ্রুতিটি H
ভাল দেখাচ্ছে) আমরা master
আমাদের স্থির মার্জটিকে অন্তর্ভুক্ত করার জন্য দ্রুত-এগিয়ে যেতে চাই :
git checkout master
git merge merge_fix
এটি সত্যিই কেবল master
শাখার পয়েন্টারটিতে স্থানান্তরিত করে H
, তবে আমি আমার ASCII শিল্পকে কিছুটা পরিষ্কার করার সুযোগটি নেব:
-A--B--C--M--H (HEAD, master, and merge_fix all point here)
\ X /
D----E--G
এবং সেখানে আপনি এটা আছে! আপনি কোনও ইতিহাস অবৈধ না করে সফলভাবে মার্জটি পুনরায় সম্পন্ন করেছেন!