Я не вірю, що для цього є щось вбудоване. Це ускладнюється тим, що рідкість одного рядка може змінюватися кілька разів, а решта файлу теж істотно не змінюється, тому ви, як правило, змінюватиметься чисельність рядків.
Якщо вам пощастило, що у рядку завжди є якась ідентифікаційна характеристика, наприклад, присвоєння змінній, ім'я якої ніколи не змінювалося, ви можете використовувати для вибору регулярного вираження 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.