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