Git rm несколько файлов?
Как легко удалить несколько файлов, не набирая вручную все пути до git rm
? У меня есть много измененных файлов, которые я хотел бы сохранить, поэтому удаление всех измененных также невозможно.
А также можно отменить изменения нескольких файлов без ввода вручную git checkout -- /path/to/file
?
Ответы
Ответ 1
Вы можете указать подстановочные знаки git rm
.
например.
git rm *.c
Или вы можете просто записать имена всех файлов в другом файле, например filesToRemove.txt
:
path/to/file.c
path/to/another/file2.c
path/to/some/other/file3.c
Вы можете автоматизировать это:
find . -name '*.c' > filesToRemove.txt
Откройте файл и просмотрите имена (чтобы убедиться, что все в порядке).
Тогда:
cat filesToRemove.txt | xargs git rm
Или:
for i in `cat filesToRemove.txt`; do git rm $i; done
Проверьте man-страницу для xargs
для получения дополнительных параметров (особенно если слишком много файлов).
Ответ 2
Просто удалите их с помощью любого другого метода (Explorer, независимо), затем запустите git add -A
. Что касается возврата нескольких файлов, вы также можете проверить каталог.
Ответ 3
В системах POSIX вы можете создать glob оболочки, которая будет соответствовать всем желаемым файлам, вы можете просто передать это на git rm
и git checkout --
. В Windows cmd.exe и PowerShell не включают в себя функции globbing и farm для приложений (git не делает это для файлов, из того, что я прочитал). Вам нужно будет использовать команду Windows или script, чтобы подготовить список файлов и соответствующим образом передать его в ваши команды git, чтобы получить аналогичный эффект.
Любая стратегия, которую вы использовали бы для передачи списка файлов команде оболочки, будет работать для команд git, которые принимают пути к файлам.
Ответ 4
Для одновременного удаления нескольких файлов вы можете проверить ответ здесь
Вы можете удалить файлы, которые не хотите, и выполнить следующую команду: git rm $(git ls-files --deleted)
Ответ 5
Вы можете просто использовать:
git add -u
Ответ 6
Вы также можете проверить Cygwin, поскольку он предоставляет большую часть функциональных возможностей Unix/Linux/* BSD в Windows. Cygwin включает оболочку Bash и find (1), среди других инструментов, упомянутых выше. (Обычно у меня обычно есть 2-4 терминала Cygwin mintty в Windows 7, потому что я считаю, что Cygwin удобен.)
Ответ 7
Я нашел git rm
обработку диких карточек, раздражающих. Найти может сделать трюк в одной строке:
find . -name '*.c' -exec git rm {} \;
{}
- это место, где будет заменено имя файла. Самое замечательное в find
заключается в том, что он может фильтровать огромное количество атрибутов файла, а не только имя.
Ответ 8
В Windows 10 с помощью Git Bash, из .gitignore
в вашей файловой структуре.
git rm -r --cached some_directory/
Я просто использовал это, чтобы игнорировать весь каталог, рекурсивно.
Это то, что есть в моем файле .gitignore
для этого:
# Use .gitignore to ignore a directory and its contents #
/some_directory/