$ git ls-files -o -c --exclude-standard > /tmp/c; git ls-files -d > /tmp/d; grep -vf /tmp/d /tmp/c
Объяснено:
git ls-files -o -c --exclude-standard
- создает список файлов, которые мы хотим вернуть;сохранено во временном файле /tmp/c
git ls-files -d
- это список удаленных файлов, которые являются нежелательными для операции;сохраненный в другой временный файл /tmp/d
grep -vf /tmp/d /tmp/c
возвращает все строки из /tmp/c
с удаленными строками из /tmp/d
Без файлов tmp:
grep -vf <(git ls-files -d) <(git ls-files -o -c --exclude-standard)