Найдена проблема:
команда do for [name in files]
разбивает список имен файлов на слова (пробел как разделитель), а не на строки (\ r \ n как разделитель)
Это - упрощенное изменение Strager решение :
git log --pretty=format: --name-status | cut -f2- | sort -u
Редактирование: Благодаря Jakub для обучения меня немного больше в комментариях, эта версия имеет более короткий конвейер и дает мерзавцу больше возможности разобраться в вещах.
git log --pretty=format: --name-only --diff-filter=A | sort -u
Можно работать git-log --name-status
, который повторяет что-то как:
commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <your@email.com>
Date: Tue Aug 12 13:28:34 2008 -0700
Added test file.
A test
Затем добавленные файлы извлечения:
git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u