Nie wierzę, że jest w tym coś wbudowanego. Utrudnia to fakt, że pojedyncza linia zmienia się kilka razy bez znacznej zmiany reszty pliku, więc często dochodzi do zmiany numerów linii.
Jeśli masz szczęście, że linia zawsze ma jakąś cechę identyfikującą, np. Przypisanie do zmiennej, której nazwa nigdy się nie zmienia, możesz użyć wyrażenia regularnego dla git blame -L. Na przykład:
git blame -L '/variable_name *= */',+1
Ale to tylko pierwszy dopasowanie dla tego wyrażenia regularnego, więc jeśli nie masz dobrego sposobu dopasowania linii, nie jest to zbyt pomocne.
Przypuszczam, że możesz coś zhakować. Nie mam teraz czasu na pisanie kodu, ale ... coś w tym stylu. Uruchom git blame -n -L $n,$n $file. Pierwsze pole jest dotknięciem poprzedniego zatwierdzenia, a drugie pole to numer wiersza w tym zatwierdzeniu, ponieważ mógł on ulec zmianie. Chwyć je i uruchom git blame -n $n,$n $commit^ $file, tzn. To samo, zaczynając od zatwierdzenia przed ostatnią zmianą pliku.
(Zauważ, że to Cię nie powiedzie, jeśli ostatni zatwierdzenie, które zmieniło linię, było zatwierdzeniem scalania. Podstawowym sposobem może się to stać, jeśli zmieniono wiersz w ramach rozwiązywania konfliktu scalenia.)
Edycja: Spotkałem się dzisiaj z postem na liście mailowej od marca 2011 roku, który wspomina o tym tigi git guima funkcję, która pomoże ci to zrobić. Wygląda na to, że ta funkcja została rozważona, ale nie ukończona, dla samego gita.