Я не верю, что для этого есть что-то встроенное. Это усложняется тем фактом, что редко бывает, что одна строка меняется несколько раз без существенного изменения остальной части файла, так что вы, как правило, в конечном итоге сильно меняете номера строк.
Если вам повезло, что строка всегда имеет некоторую идентифицирующую характеристику, например, присваивание переменной, имя которой никогда не менялось, вы можете использовать выбор регулярного выражения для git blame -L. Например:
git blame -L '/variable_name *= */',+1
Но это находит только первый совпадение для этого регулярного выражения, поэтому, если у вас нет хорошего способа сопоставить строку, это не слишком полезно.
Вы могли бы взломать что-нибудь, я полагаю. У меня нет времени писать код только сейчас, но ... что-то в этом роде. Беги git blame -n -L $n,$n $file. Первое поле - это предыдущий коммит, а второе - номер строки в этом коммите, поскольку он мог измениться. Возьмите их и запустите git blame -n $n,$n $commit^ $file, т.е. то же самое, начиная с фиксации до последнего изменения файла.
(Обратите внимание, что это не удастся вам, если последний коммит, который изменил строку, был коммитом слияния. Основной способ это могло произойти, если строка была изменена как часть разрешения конфликта слияния.)
Редактировать: Я случайно встретил этот пост в списке рассылки с марта 2011 года, в котором упоминается об этом, tigи у git guiменя есть функция, которая поможет вам сделать это. Похоже, что функция была рассмотрена, но не завершена, для самого git.