git: список файлов с соответствующей ревизией последнего изменения

Можно ли получить список файлов с соответствующей ревизией последнего изменения из удаленного? Например, я мог бы выполнить

git ls-files

или же

git diff --name-only origin/master..HEAD

а затем иметь список файлов, которые я мог сделать

git log origin/master -n 1 --pretty=format:%h -- fileName

для каждого. Но я бы хотел сделать это самым элегантным способом. Желательно использовать только команды git. Идеальный результат будет выглядеть так:

file1 35acf7e2f89502f7fd5868732788d9c72349165f
file2 2aa721537dd3ba64967c2b00441cebb8775ded74
file3 c4e0c00181e23f03c128588620f5270a360de03b
file4 35588dd34113e9f9a843d987774d173fb63b5409
...

или сначала ревизия, затем имя файла.

1 ответ

git ls-files | while read file; \
    do \
        git log -n 1 --pretty="%h $file" -- $file; \
    done

ls-files перечислит файлы в рабочем дереве, которое затем можно будет передать в журнал git для каждого файла, чтобы получить фиксацию.

git ls-files | xargs -n 1 -I {} \
    sh -c 'git log -n 1 --pretty=format:%h -- {} ; echo " {}"'

То же самое с использованием xargs

Другие вопросы по тегам