2013-11-09 2 views

ответ

31

Запустить git blame на файл. Он покажет вам идентификатор фиксации, дату и время и кто их совершил - для каждой строки. Затем просто скопируйте идентификатор фиксации, и вы можете использовать его в git log <commit> или git show <commit>.

К примеру, у меня есть файл, называемый test.txt, с линиями добавлены на различных фиксаций:

$ cat test.txt 
First line. 
Second line. 

Идущие в git blame:

$ git blame test.txt 
^410c3dd (Leigh 2013-11-09 12:00:00 1) First line. 
2365eb7d (Leigh 2013-11-09 12:00:10 2) Second line. 

Первый бит фиксации ID, затем имя, дату, время, часовой пояс и, наконец, номер строки и содержимое строки.

+5

Проблема в том, что это показывает только те файлы, в которых они были изменены, а не когда они были добавлены. – ensonic

+0

@ensonic Этот ответ может быть интересным, если это так (например, строка была перемещена или изменение пробела): http://stackoverflow.com/a/5816177/812680 – maartencls

+0

Полезным дополнением является grep-результат git-теста результатов .txt | grep 'Первая линия'' –

25

Есть что-то более быстрое, чем выдача вины за полный файл. Если линия ${lineno} и файл ${filename} вы можете:

git blame -L ${lineno},${lineno} ${filename} 

Пример:

git blame -L 2,2 test.txt 
6
git log -S searchTerm 

дает коммиты, в котором был введен термин поиска.

Смежные вопросы