Git рм несколько файлов? - PullRequest
       37

Git рм несколько файлов?

20 голосов
/ 02 марта 2012

Как мне легко удалить несколько файлов, не вводя вручную полные пути всех их к git rm? У меня есть много измененных файлов, которые я хотел бы сохранить, поэтому удаление всех измененных также невозможно.

А также возможно отменить изменения нескольких файлов без ручного ввода git checkout -- /path/to/file?

Ответы [ 9 ]

28 голосов
/ 02 марта 2012

Вы можете задать символы подстановки для 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, чтобы узнать больше опций (особенно если файлов слишком много).

9 голосов
/ 02 марта 2012

Просто удалите их, используя любой другой метод (Explorer, любой другой), затем запустите git add -A. Что касается возврата нескольких файлов, вы также можете проверить каталог.

1 голос
/ 20 июня 2015

Для удаления нескольких файлов одновременно, вы можете получить ответ здесь

Вы можете удалить файлы, которые вам не нужны, и выполнить эту команду: git rm $(git ls-files --deleted)

1 голос
/ 02 марта 2012

В системах POSIX вы можете создать глобус оболочки, который будет соответствовать всем желаемым файлам, вы можете просто передать это git rm и git checkout --. В Windows cmd.exe и PowerShell не включают в себя глобализацию и передачу данных приложениям (из того, что я читал, git не делает этого для файлов). Вам нужно будет использовать команду или скрипт Windows, чтобы подготовить список файлов и передать его соответствующим командам git, чтобы получить аналогичный эффект.

Любая стратегия, которую вы использовали бы для передачи списка файлов в команду оболочки, будет работать для команд git, которые принимают пути к файлам.

0 голосов
/ 01 марта 2019

Вы просто используете

find . -name '*.DS_Store' | xargs git rm

, чтобы удалить много файлов, совпадающих с подстановочными знаками.

0 голосов
/ 17 августа 2016

В Windows 10, используя Git Bash, из местоположения .gitignore в вашей файловой структуре.

git rm -r --cached some_directory/

Я просто использовал это для рекурсивного игнорирования всего каталога.Вот что в моем файле .gitignore для этого:

# Use .gitignore to ignore a directory and its contents #
/some_directory/ 
0 голосов
/ 20 января 2016

Я обнаружил, что обработка git rm надоедливых шаблонов.Find может сделать трюк в одной строке: find . -name '*.c' -exec git rm {} \; {} - это место, где будет подставлено имя файла.Самое замечательное в find заключается в том, что он может фильтровать огромное количество атрибутов файла, а не только имя.

0 голосов
/ 13 января 2016

Вы можете просто использовать:

git add -u
0 голосов
/ 02 октября 2012

Вы также можете проверить Cygwin , так как он обеспечивает большую часть функциональности Unix / Linux / * BSD в Windows. Cygwin включает оболочку Bash и find (1), среди других инструментов, упомянутых выше. (У меня обычно есть 2-4 мятных терминала Cygwin одновременно на Windows 7, потому что я нахожу Cygwin удобным.)

...