o=0; git log --oneline | while read l; do printf "%+9s %s\n" "HEAD~${o}" "$l"; o=$(($o+1)); done | less
Эта команда позволяет получить список смещений от HEAD для каждого коммита в выводе git log.
— o=0;
инициализирует переменную o
с нулевым значением.
— git log --oneline
выводит список коммитов в формате одной строки.
— while read l;
начинает цикл, в котором каждая строка вывода git log будет считываться как l
.
— printf "%+9s %s\n" "HEAD~${o}" "$l"
форматирует вывод, добавляя смещение от HEAD (HEAD~${o}
) и сам коммит ($l
).
— o=$(($o+1))
увеличивает переменную o
на 1 для следующего коммита.
— | less
позволяет просматривать результат поэкранно.
Альтернативно, вы можете использовать git rev-list --count HEAD
для получения общего количества коммитов от HEAD, и затем итерировать от 0 до этого значения.