Как подготовить только удаленные файлы в Git для Windows?
Предположим, я запустил git status и удалил, изменил и другие изменения.
Как подготовить только удаленные файлы?
Я попробовал ответ в этом посте:
git ls-files - удалено | xargs git add
но это не похоже на работу под окнами.
1 ответ
Windows не предоставляет xargs
команда, и это делает бесполезным большинство предложений о том, как решить эту проблему, в том числе те, которые приведены на странице документации git add
или же git rm
,
Но документация git rm
предлагает одну команду, которая может быть использована для создания списка команд, которые могут решить эту проблему. Команда:
git diff --name-only --diff-filter=D --line-prefix="git rm "
Он создает список файлов, которые были удалены из рабочего дерева, по одному файлу в каждой строке и префикс каждого имени файла с git rm
,
После того, как вы запустите его как есть и проверьте его вывод, вы можете перенаправить его вывод в .cmd
файл (скажем, rm-deleted.cmd
) добавив > rm-deleted.cmd
в командной строке, а затем запустите сгенерированный скрипт (rm-deleted.cmd
) чтобы достичь своей цели. Затем вы можете удалить скрипт (del rm-deleted.cmd
); это не общий инструмент для повторного использования, а просто одноразовый скрипт, который удаляет из индекса определенный список файлов.
Узнайте больше об аргументах git diff
,
У меня нет экземпляра Windows под рукой, и я не знаю, как Git обрабатывает файлы, в именах которых есть пробелы. Я подозреваю, что этот скрипт не может работать с такими файлами. Если у вас есть файлы или каталоги, в именах которых есть пробелы, вы должны открыть сгенерированный скрипт в программном редакторе, заменить все вхождения git rm
с git rm "
и добавить цитаты ("
) после каждой строки (вам нужен редактор программ, чтобы можно было искать и заменять конец строк).
Оборачивая имена файлов в кавычки, командная строка Windows передает их правильно git rm
и Git может идентифицировать файлы и удалить их из индекса.