git rebase --interactive आप चाहते हैं आदेश है।
उदाहरण:
वर्तमान स्थिति यह है:
bernt@le3180:~/src/stackoverflow/reordering_of_commits
$ git status
On branch master
nothing to commit, working tree clean
bernt@le3180:~/src/stackoverflow/reordering_of_commits
$ git log --oneline
a6e3c6a (HEAD -> master) Fourth commit
9a24b81 Third commit
7bdfb68 Second commit
186d1e0 First commit
मैं कमिट्स 9a24b81(थर्ड कमिट) और 7bdfb68(सेकंड कमिट) करना चाहता हूं । ऐसा करने के लिए, मैं पहली बार हम जिस पहले कमिटमेंट को बदलना चाहते हैं, उससे पहले कमिटमेंट ढूंढ लेते हैं । यह प्रतिबद्ध 186d1e0(फर्स्ट कमिट) है।
git rebase --interactive COMMIT-BEFORE-FIRST-COMMIT-WE-WANT-TO-CHANGEइस मामले में निष्पादित करने का आदेश है :
bernt@le3180:~/src/stackoverflow/reordering_of_commits
$ git rebase --interactive 186d1e0
यह निम्न सामग्री के साथ डिफ़ॉल्ट संपादक में एक फ़ाइल खोलता है:
pick 7bdfb68 Second commit
pick 9a24b81 Third commit
pick a6e3c6a Fourth commit
# Rebase 186d1e0..a6e3c6a onto 186d1e0 (3 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
ध्यान दें कि फ़ाइल में कमिट्स का क्रम गिट लॉग के लिए उपयोग किए जाने वाले के विपरीत है। गिट लॉग में, सबसे हालिया प्रतिबद्धता शीर्ष पर है। इस फ़ाइल में, सबसे हालिया प्रतिबद्ध सबसे नीचे है।
जैसा कि फ़ाइल के नीचे की टिप्पणी बताती है कि विभिन्न चीजें हैं जो मैं कर सकता हूं, जैसे स्क्वैशिंग, ड्रॉपिंग और पुन: व्यवस्थित करना। फिर से आदेश देने के लिए, मैं फ़ाइल को संपादित करता हूं ताकि यह इस तरह दिखे (नीचे प्रदर्शित टिप्पणियां नहीं):
pick 9a24b81 Third commit
pick 7bdfb68 Second commit
pick a6e3c6a Fourth commit
pickप्रत्येक पंक्ति का अर्थ है "उपयोग (यानी शामिल हैं) इस के लिए प्रतिबद्ध" और जब मैं बचाने रिबेस आदेशों के साथ अस्थायी फ़ाइल और संपादक से बाहर निकलें, Git आदेश पर अमल और भंडार और कार्यशील निर्देशिका अद्यतन करेगा के शुरू में आदेश:
$ git rebase --interactive 186d1e0
Successfully rebased and updated refs/heads/master.
bernt@le3180:~/src/stackoverflow/reordering_of_commits
$ git log --oneline
ba48fc9 (HEAD -> master) Fourth commit
119639c Second commit
9716581 Third commit
186d1e0 First commit
इतिहास को फिर से लिखने पर ध्यान दें।
लिंक: