দ্রষ্টব্য: আপনার পরিণতিগুলি না জেনে আপনি যে কোনও প্রতিশ্রুতি অন্য রেপোতে ঠেলেছেন সেগুলি পরিবর্তন করা উচিত নয় ।
git log --oneline -4
D commit_message_for_D
C commit_message_for_C
B commit_message_for_B
A commit_message_for_A
git rebase --interactive
pick D commit_message_for_D
pick C commit_message_for_C
pick B commit_message_for_B
pick A commit_message_for_A
প্রকার i(সন্নিবেশ মোডে ভিআইএম রাখুন)
এই দেখতে দেখতে তালিকাটি পরিবর্তন করুন (আপনাকে প্রতিশ্রুতি বার্তা সরাতে বা অন্তর্ভুক্ত করতে হবে না)। ভুল বানান না squash! :
pick C commit_message_for_C
pick B commit_message_for_B
pick A commit_message_for_A
squash D
Escতারপরে টাইপ ZZকরুন (ভিআইএম সংরক্ষণ করুন এবং প্রস্থান করুন)
# This is a combination of 2 commits.
# The first commit's message is:
commit_message_for_D
# This is the 2nd commit message:
commit_message_for_A
আদর্শ i
নতুন প্রতিশ্রুতি বার্তাটি দেখতে আপনি কী চান তে পাঠ্যটি পরিবর্তন করুন। আমি এটি প্রতিশ্রুতিবদ্ধকরণের পরিবর্তনের বর্ণনা হিসাবে সুপারিশ করব Aএবং D:
new_commit_message_for_A_and_D
টাইপ করুন EscতারপরZZ
git log --oneline -4
E new_commit_message_for_A_and_D
C commit_message_for_C
B commit_message_for_B
git show E
(You should see a diff showing a combination of changes from A and D)
আপনি এখন একটি নতুন প্রতিশ্রুতি তৈরি করেছেন E। কমিট করে Aএবং Dআপনার ইতিহাসে আর নেই তবে চলে যায় না। আপনি এখনও এই মুহুর্তে এবং কিছু সময়ের জন্য তাদের পুনরুদ্ধার করতে পারেন git rebase --hard D( git rebase --hardকোনও স্থানীয় পরিবর্তন ধ্বংস করে দেবে! )।