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` при сильных перемещениях строк.