इस दृष्टिकोण के लिए आया (और यह संभवतः इंटरैक्टिव रिबास का उपयोग करने के समान है) लेकिन मेरे लिए यह एक तरह से सीधा है।
नोट: मैं इस दृष्टिकोण को उदाहरण के लिए प्रस्तुत करता हूं कि आप हर रोज़ विकल्प के बजाय क्या कर सकते हैं। चूंकि इसके कई चरण हैं (और संभवत: कुछ कैविट्स।)
कहते हैं कि आप प्रतिबद्ध बदलना चाहते हैं 0
और आप वर्तमान में हैंfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
इस कमिट के लिए चेकआउट करें और बनाएं quick-branch
। आप अपनी सुविधा शाखा को पुनर्प्राप्ति बिंदु (आरंभ करने से पहले) के रूप में भी क्लोन कर सकते हैं।
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
अब आपके पास कुछ इस तरह होगा:
0(quick-branch)HEAD---1---2---(feature-branch)
मंच परिवर्तन, बाकी सब को छिपाने के लिए।
git add ./example.txt
git stash
परिवर्तन करें और वापस चेकआउट करें feature-branch
git commit --amend
git checkout feature-branch
अब आपके पास कुछ इस तरह होगा:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
रीबेस feature-branch
पर quick-branch
(किसी भी तरह से संघर्ष का समाधान)। स्टेश लगाओ और हटाओ quick-branch
।
git rebase quick-branch
git stash pop
git branch -D quick-branch
और आप के साथ अंत:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git डुप्लिकेट नहीं होगा (हालांकि मैं वास्तव में किस हद तक नहीं कह सकता) 0 रीबासिंग करते समय।
नोट: सभी प्रतिबद्ध हैश को उस कमिट से शुरू किया जाता है जिसे हम मूल रूप से बदलना चाहते हैं।