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