Мерзавец винить на линии, измененной несколько раз?
Если строка изменялась назад и вперед между двумя версиями несколько раз, git blame, кажется, показывает только последние коммиты в этой строке.
можно ли было бы показать все коммиты на этой линии?
5 ответов
git blame
не могу сделать это сам (но см. ниже для обхода).
Но git gui
имеет режим вины, который позволяет углубляться в коммиты.
Вызвать его с git gui blame <filename>
после установки.
Я не знаю, как отобразить все коммиты в этой строке одновременно, но вы можете "просверлить" каждое изменение в строке, используя git blame SHA~ -- filename
, На каждой итерации обвинения просто вставьте следующий "последний" SHA, который изменил эту строку.
Пример: при первом запуске git blame foo.php
Вы видите, что линия была изменена f8e2e89a
, так что вы выходите и бежите git blame f8e2e89a~ -- foo.php
, git покажет вам, кто изменил строку раньше f8e2e89a
, Промойте и повторите при необходимости.
Вы не можете делать то, что вы хотите с git blame
, но вы можете приблизиться с помощью алгоритма сравнения слов или другого пользовательского инструмента сравнения. В частности, вы могли бы показать построчное слово diff в выходных данных журнала следующим образом:
# Show deletions delimited with [- -], and additions with {+ +}.
git log --patch --word-diff=plain
Смотрите также
Цель git blame
чтобы показать, какой коммит был изменен последним, какие строки в конкретном файле. Он не имеет возможности показывать несколько версий одной и той же строки.
На основе ответов, уже предоставленных здесь, я создал скрипт под названием git-rblame
в моем ПУТИ со следующим содержанием:
#!/bin/bash
revision="HEAD"
while [ -n "${revision}" ]
do
result=$(git blame "${revision}" "$@")
revision="${result%% *}"
if [[ "${revision}" != [a-z0-9]*[a-z0-9] ]]
then
revision=""
else
echo "${result}"
revision="${revision}~"
fi
done
Тогда я могу позвонить git rblame -L xxx,yyy myfilename
и я получу полную историю для файла, соответствующего данному содержанию. Учитывая тот факт, что номер строки может измениться, значимое регулярное выражение, кажется, работает лучше.