Просмотр git истории конкретной строки - PullRequest
0 голосов
/ 22 мая 2018

Я хочу просмотреть историю коммитов, связанных с конкретной строкой в ​​файле.Я знаю, что мы можем получить историю файла.Есть ли какие-либо команды для сортировки только коммитов, связанных с одной конкретной строкой?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Вы можете использовать git log https://git -scm.com / docs / git-log

git log -L'the line from your file' -- path/to/your/file.txt
0 голосов
/ 22 мая 2018

bomz дал правильный вариант, но с неправильным синтаксисом.Фиксированная строка будет выглядеть следующим образом:

git log -L '/the line from your file/,+1:path/to/your/file.txt'

Значение аргумента для -L - это «найти первое вхождение регулярного выражения /the line from your file/ в path/to/your/file.txt и показать журнал, относящийся к одному диапазону строк, начинающемуся сэта точка (имеется в виду только эта строка, но вы могли бы сказать +5 вместо этого) ".

Предостережение заключается в том, что если в строке содержатся символы со специальным значением в регулярном выражении, вам необходимо их избежать.

Однако, , вероятно, гораздо проще использовать номер строки , например:

git log -L15,+1:'path/to/your/file.txt'

(для строки 15 файла path/to/your/file.txt)

В обоих случаях+1 можно заменить на большее число, чтобы получить больше строки, или на регулярное выражение для соответствия концу выбранного диапазона.

Подробное описание от документов :

-L <start>,<end>:<file>
-L :<funcname>:<file>

Отследить эволюцию диапазона линий, заданного ", " (или именем функции regex ) в пределах .Вы не можете давать какие-либо ограничения пути.В настоящее время это ограничивается прогулкой, начинающейся с одной ревизии, т. Е. Вы можете указать только один или несколько положительных аргументов ревизии.Вы можете указать эту опцию более одного раза.

и могут принимать одну из следующих форм:

  • число

    Если или - это число, указывающее абсолютный номер строки (количество строк от 1).

  • / regex /

    В этой форме будет использоваться первыйстрока, соответствующая данному регулярному выражению POSIX.Если является регулярным выражением, он будет искать с конца предыдущего диапазона -L, если таковой имеется, или с начала файла.Если равно «^ / regex /», он будет искать с начала файла.Если является регулярным выражением, поиск будет начинаться со строки, заданной как .

    *. 1055 *
  • + смещение или -offset

    Это действительно только для и будет указывать количество строк до или после строки, заданной .

Если вместо и * 1068 указано «: »*, это регулярное выражение, которое обозначает диапазон от первой строки funcname, которая соответствует , до следующей строки funcname.«: » выполняет поиск в конце предыдущего диапазона -L, если он есть, в противном случае - в начале файла.«^: » выполняет поиск с начала файла.

0 голосов
/ 22 мая 2018

используйте команду git blame.Смотрите справочные страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...