দ্রষ্টব্য: আপনার পরিণতিগুলি না জেনে আপনি যে কোনও প্রতিশ্রুতি অন্য রেপোতে ঠেলেছেন সেগুলি পরিবর্তন করা উচিত নয় ।
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
কোনও স্থানীয় পরিবর্তন ধ্বংস করে দেবে! )।