আমি কেবল গিটে একটি অতীত প্রতিশ্রুতিতে একটি ফাইল সংশোধন করে পড়েছি তবে দুর্ভাগ্যক্রমে গৃহীত সমাধানটি 'পুনর্বার' করে, যা আমি চাই না। সুতরাং এখানে আমার প্রশ্ন:
প্রতিবার এবং পরে, আমি একটি সম্পর্কিত (কোনও সম্পর্কিত নয়) বৈশিষ্ট্যটিতে কাজ করার সময় আমার কোডে একটি ত্রুটি লক্ষ্য করি। তাত্ক্ষণিকভাবে 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
। লিখিত হিসাবে এটি স্থির অঙ্গীকারের স্থিতিতে খারাপ প্রতিশ্রুতি প্রয়োগের চেষ্টা করবে।