Можно ли увидеть, кто редактировал конкретную строку перед коммитом, о котором сообщалось git blame
, например историю коммитов для данной строки?
Например, я запускаю следующее (в превосходном uncrustify
проекте):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Как я могу узнать, кто редактировал эту строку перед коммитом fe25b6d
? И кто его редактировал перед этим коммитом?
-w
опцию. Существует также-M
для перемещенного / скопированного кодаОтветы:
Вы можете указать ревизию для git blame, чтобы оглянуться назад, начиная с (вместо значения по умолчанию
HEAD
);fe25b6d^
является родителемfe25b6d
.источник
--
обычно используется в качестве разделителя в аргументах командной строки - в случае с Git он обычно используется для отделения таких вещей, как хеши коммитов, от списка имен файлов.Вы можете использовать git log -L для просмотра эволюции ряда линий.
Например :
означает «проследить эволюцию строк с 15 по 23 в файле с именем filename.txt».
источник
Амбер ответ правильный, но я нашел его неясным; Синтаксис:
Примечание:
--
используется для отделения дерева sha1 от относительных путей к файлам. 1Например:
Полная благодарность Амбер за знание всех вещей! :)
источник
Вы можете проверить:
Дает вам хорошее графическое отображение изменений, таких как "git blame", но с кликабельными ссылками на строку, чтобы перейти к более ранним коммитам. Наведите указатель мыши на ссылки, чтобы получить всплывающее окно с подробной информацией о коммите. Не мои кредиты ... нашел это здесь:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
графический интерфейс Tcl / Tc для git Без каких-либо других параметров он запускает довольно простое, но полезное графическое приложение для фиксации файлов, фрагментов или даже отдельных строк и других подобных команд, таких как изменение, возврат, нажатие ... Это часть пакета git stock. На окнах это включено в установщик. На Debian - я не знаю о других * nix системах - он должен быть установлен отдельно:Из документов:
https://git-scm.com/docs/git-gui
источник
this
: но как мне увидеть предыдущую версию строки и когда она была добавлена?Основываясь на предыдущем ответе, эта однострочная команда bash должна дать вам то, что вы ищете. Он отображает историю мерзавца за конкретную строку определенного файла за последние 5 ревизий:
В выходных данных этой команды вы можете увидеть, как меняется содержимое строки или даже может отображаться номер строки для конкретного коммита.
Это часто указывает на то, что строка была добавлена впервые, после этой конкретной фиксации. Это также может указывать на то, что строка была перемещена из другой части файла.
источник
Там тоже
recursive-blame
. Может быть установлен систочник
Уникальным решением этой проблемы является использование git log:
Как объяснил Андре здесь
источник
git config --global alias.changes 'log -p -M --follow --stat --'
и тогда я могу просто напечататьgit changes path/to/your/file
Если вы используете JetBrains Idea IDE (и его производные), вы можете выбрать несколько строк, щелкнуть правой кнопкой мыши контекстное меню, затем Git -> Показать историю для выбора. Вы увидите список коммитов, которые влияли на выбранные строки:
источник
Начиная с Git 2.23 вы можете использовать git blame --ignore-rev
Для примера, приведенного в вопросе, это будет:
(однако это вопрос с подвохом, потому что fe25b6d - первая ревизия файла!)
источник
Основываясь на ответе Уилла Шепарда, его вывод будет включать дубликаты строк для коммитов, в которых не было изменений, поэтому вы можете отфильтровать их следующим образом (используя этот ответ )
Обратите внимание, что я удалил аргумент REVS, и это восходит к корневому коммиту. Это связано с наблюдением Макса Нанаси выше.
источник
Основываясь на ответе DavidN, и я хочу следовать переименованному файлу:
ref: красиво отобразить историю переименования файлов в git log
источник
Я использую этот маленький скрипт bash, чтобы посмотреть историю обвинений.
Первый параметр: файл для просмотра
Последующие параметры: передано, чтобы свалить вину
Вы можете указать параметры-вина, такие как -L 70, + 10, но лучше использовать поиск по регулярным выражениям в git-винах, потому что номера строк обычно «меняются» с течением времени.
источник
Основывается на stangls «ы ответ , я ставлю этот сценарий в моей PATH (даже на Windows) , как мерзавца-БХ:
Это позволяет мне искать все коммиты, в которых было задействовано слово:
Автор сценария:
источник