Это похоже на работу для git filter-branch
, который может переписать нужные вам коммиты. Поскольку эти коммиты еще не отправлены, изменение их содержимого (и, следовательно, их SHA1) не имеет большого значения.
И эффект аналогичен тому, что может сделать перебазирование или выбор вишни, за исключением того, что вы можете запустить любую команду для каждый коммит воспроизводится.
Вы можете запустить filter-branch
для нескольких последних коммитов:
См. "Переформатирование кодовой базы с помощью git filter-branch
< /a>", автор Эллиот Чанс
git filter-branch --tree-filter 'git-clang-format' -- <SHA1>..HEAD
Учитывая git-clang-format
синтаксис, вы можете применить его только к измененным файлам в каждом коммите.
Например, для .cpp
файлов:
git filter-branch --tree-filter 'git-clang-format $(\
git diff-index --diff-filter=AM --name-only $GIT_COMMIT |\
grep .cpp)' -- <SHA1>..HEAD
Обновление 2017, с Git 2.14.x/2.15 (Q4 2017) у вас есть иллюстрация:
См. коммит 2118805, коммит 6134de6 (14 августа 2017 г.), автор Брэндон Уильямс (mbrandonw
) .
(Объединено Хунио С. Хамано -- gitster
-- в commit a36f631, 25 сентября 2017 г.)
Makefile: добавить правило сборки стиля
Добавьте правило сборки "style
", которое будет запускать git-clang-format
при разнице между HEAD и текущим рабочим деревом.
Результатом будет разница предлагаемых изменений.
.PHONY: style
style:
git clang-format --style file --diff --extensions c,h
person
VonC
schedule
15.07.2017