Я щойно прочитав поправки одного файлу в минулому комітеті в git, але, на жаль, прийняте рішення "переробляє" коміти, а це не те, що я хочу. Тож ось моє запитання:
Раз у раз я помічаю помилку в своєму коді під час роботи над (непов'язаною) функцією. Потім швидше 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
. Як було написано, він спробує застосувати погане ув'язнення до стаціонарного стану.