मैंने अभी-अभी गिट में एक पिछली फाइल में संशोधन करते हुए पढ़ा, लेकिन दुर्भाग्य से स्वीकृत समाधान 'कमिटमेंट' को कमिट करता है, जो कि मैं नहीं चाहता। तो यहाँ मेरा सवाल है:
हर अब और फिर, मैं एक (असंबंधित) सुविधा पर काम करते समय अपने कोड में एक बग को नोटिस करता हूं। एक त्वरित git blame
तब पता चलता है कि बग को कुछ समय पहले शुरू किया गया है (मैं काफी कमिट करता हूं, इसलिए आमतौर पर यह सबसे हालिया कमिट नहीं है जिसने बग को पेश किया है)। इस बिंदु पर, मैं आमतौर पर ऐसा करता हूं:
git stash # temporarily put my work aside
git rebase -i <bad_commit>~1 # rebase one step before the bad commit
# mark broken commit for editing
vim <affected_sources> # fix the bug
git add <affected_sources> # stage fixes
git commit -C <bad_commit> # commit fixes using same log message as before
git rebase --continue # base all later changes onto this
हालांकि, ऐसा अक्सर होता है कि उपरोक्त अनुक्रम कष्टप्रद हो रहा है। विशेष रूप से 'इंटरएक्टिव रिबेस' उबाऊ है। क्या उपरोक्त अनुक्रम का कोई शॉर्टकट है, जो मुझे पूर्व में किए गए परिवर्तनों के साथ एक मनमाने ढंग से संशोधन करने देता है? मैं पूरी तरह से जानता हूं कि यह इतिहास को बदल देता है, लेकिन मैं इतनी बार गलतियाँ कर रहा हूं कि मुझे वास्तव में कुछ पसंद आएगा
vim <affected_sources> # fix bug
git add -p <affected_sources> # Mark my 'fixup' hungs for staging
git fixup <bad_commit> # amend the specified commit with staged changes,
# rebase any successors of bad commit on rewritten
# commit.
हो सकता है कि एक स्मार्ट स्क्रिप्ट जो प्लंबिंग टूल्स का उपयोग करके फिर से लिख सकती है?
rebase -i
?
rebase --onto tmp bad-commit master
। जैसा कि लिखा गया है कि यह खराब प्रतिबद्ध राज्य को लागू करने की कोशिश करेगा।