Показать изменения в том, что раньше было Line - PullRequest
3 голосов
/ 25 апреля 2019

Я бы хотел отобразить журнал изменений строки в файле. Проблема в том, что команда git log {commitHash} -p -1 -L 17, + 1: {filePath} дает мне историю того, что является строкой 17 после {commitHash}. То, что я хочу, это список изменений того, что раньше было 17-й строкой.

Я посмотрел файл и увидел, что после коммита Строка 17 теперь Строка 20-22. Поэтому я попытался git log {commitHash} -p -1 -L 20, + 3: {filePath} :

commit {commitHash} 
Author: {author}
Date:   {date}

   {commitMessage}

diff --git a/{filePath} b/{filePath}
--- a/{filePath}
+++ b/{filePath}
@@ -17,1 +20,3 @@
-   <button type="button" class="btn btn-info" tooltip="someTooltip" placement="bottom" disabled>
+   <button type="button" class="btn btn-info"
+    tooltip="someTooltip"
+    placement="bottom" disabled>

В основном мне нужна команда, в которой я предоставляю строку 17, + 1, но получаю результат команды git log {commitHash} -p -1 -L 20, + 3: {filePath} .

Смежный вопрос: Получить журнал фиксации для определенной строки в файле?

1 Ответ

1 голос
/ 14 мая 2019

Похоже, что вы хотите получить фрагменты из вывода git diff на основе номера базовой линии. Вот какой-то уродливый Perl, который может это сделать.

git diff -U0 d462a1f6 e627666c | perl -e 'while(my $line = <>){ if($line =~ /^@@ -14/) { while($line = <>) { if($line =~ /^@@/) {exit} print $line} } }'

Это нормально для меня, используя git bash в Windows.

Вы, конечно, захотите заменить «14» в примере на желаемый номер строки.

Вы также можете отфильтровать вывод, чтобы показать только добавленные строки с небольшим изменением, например

print $line if $line =~/\+/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...