Вот как обнаружить удаленные файлы и подготовить их к удалению как часть следующего коммита.Все решения в этой теме имеют разные достоинства.Это решение, приведенное ниже, конкретно касается проблемы имен файлов с пробелами в них.
git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm '{}'
убедитесь, что вы проверили это с опцией git --dry-run перед запуском следующего:
git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm --dry-run '{}'
объяснение:
git status --porcelain
Это печатает что-то вроде D "/ путь к папке / путь к файлу", что происходит только при наличии пробелов в именах путей
awk '/^.D .*$/ {print $0}'
соответствует только строкам, которые начинаются с "D"
sed 's/ D \(.*\)/\1/'
удаляет "D" в начале каждой строки
tr -d '"'
удаляет кавычки, если есть
xargs -I {} git rm '{}'
определить переменные имени файла как {} запустить имя файла в git rm, заключенном в одинарные кавычки, чтобы убедиться, что оно поддерживает имена файлов с пробелами.