नोट: आपको किसी भी तरह से किसी अन्य रेपो के लिए धक्का नहीं दिया जाना चाहिए, जब तक आपको परिणाम पता न हो ।
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करें (VIM सहेजें और बाहर निकलें)
# 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किसी भी स्थानीय परिवर्तन को नष्ट कर देगा! )।