Я только что прочитал изменение одного файла в прошлом в 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.
Может быть, умный script, который может переписать, фиксирует использование инструментов сантехники или так?