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 до этого значения.
