intermediate
git blame
Находите контекст коммита для строки как данные расследования, а не для личного обвинения.
`git blame` сопоставляет каждую строку с коммитом, который её последним менял. Ищите **контекст** — зачем строка существует — а не «виноватого».
git blame -L 120,150 src/parser.ts
git blame -w src/parser.ts # игнор пробелов
git log -L 120,150:src/parser.ts # история строки
Перейдите от blamed-коммита к сообщению, PR, тестам и окружающему diff до смены поведения. `.git-blame-ignore-revs` исключает массовое форматирование.
На интервью: история строки vs один снимок blame, ignore-revs, blame вместе с `git show`.
Типовые ошибки: форматирующий коммит скрывает intent; blame без чтения всего коммита; blame на generated.
Компромисс — быстрая атрибуция строк против `git log -L` при сильных переносах и reformat.
Чеклист:
- Blame как данные расследования, не приговор.
- Полный diff blamed-коммита.
- ignore-revs для mass reformat.
- `log -L` при сильных перемещениях строк.