С git reset --hard
перед ним git ls-files -d
никогда не должен генерировать какой-либо вывод (и если бы он это сделал, вы бы хотели использовать git ls-files -d -z
, чтобы он генерировал вывод с NUL-окончанием для xargs -0
).
Как только вы выполните git reset --hard
, отслеживаемая часть рабочего дерева и весь индекс будут соответствовать фиксации HEAD. git ls-files -d
будет показывать только файлы, которые есть в индексе, но не в рабочем дереве. Поскольку в рабочем дереве будет все, что есть в индексе, после аппаратного сброса никогда не должно быть удаленных файлов.
Бит git clean
полезен для удаления неотслеживаемых файлов (которые git reset --hard
не будут касаться), но вы можете изменить его на git clean -dfq
, чтобы также удалить полностью неотслеживаемые каталоги).