11 сентября 2023 г. (изменено: 11 сентября 2023 г.)
Канал: @cherkashindev
git blame —ignore-rev
Пару месяцев назад, я читал статью о том, как команда TypeScript мигрировала с пространств имён на модули. Естественно, миграция происходила не вручную, а с помощью их внутренней тулзы (насколько я помню). И одной из проблем после такой массированной миграции (которая несёт лишь синтаксические изменения), является потеря истории `git blame`.
🔍 Наверняка вы сталкивались с подобной проблемой в своих проектах. Когда в следующий раз вы попробуете использовать git blame, то увидите, что множество строк в файле помечены коммитом с вашим рефакторингом. Теперь, чтобы найти реальный коммит, в котором была изменена строка, вам придётся переключиться на коммит до рефакторинга и ещё раз выполнить git blame.
🛡️ Чтобы не страдать, в гит добавили две опции --ignore-rev и --ignore-revs-file, которые скажут git blame , чтобы он вывел историю так, как будто этих коммитов никогда и не было. Строки, которые были изменены или добавлены игнорируемым коммитом, будут связаны с предыдущим коммитом, который изменил эту строку или близлежащие строки. Теперь можете не бояться потерять историю во время рефакторинга!
❗️К сожалению, не получится проигнорировать коммиты, если вы переносили файлы из одной папки в другую.
🔗 Подробнее можете прочитать здесь — Ignoring bulk change commits with git blame.