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