Как вы gitignore все файлы с одним расширением файла из репозитория git после фиксации? - PullRequest
0 голосов
/ 02 марта 2020

Я новичок в использовании git, и мне было интересно, как удалить все кэшированные .exe файлы из репозитория git (я хочу сохранить их в своей рабочей папке). В папке root есть подпапки, в которых также есть файлы .exe. Будет ли работать следующая команда или я должен сделать что-то еще? Я понимаю, что -r предназначен для удаления каталогов, а не файлов, и это только кажется неправильным, и при поиске этой топи c единственное, что я нашел, было использование команд find и delete, но я не уверен о том, как их использовать.

git rm --cached -r *.exe

Редактировать: я выполнил команду, и она удалила только .exe из папки root, а не подпапок. Вручную перечисляются все пути к подпапкам и выполняется только эта команда. option?

Поскольку требуется передача команды git с ее кэшированным флагом, для людей, которые не знакомы с командами сцепления в linux / unix, рекурсивного ответа на удаление unix недостаточно.

Ответы [ 2 ]

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

Это должно сделать это (в sh совместимой оболочке):

find . -name '*.exe' -exec git rm --cached '{}' \;

В качестве альтернативы, менее элегантно, но проще в составлении:

ls -R | grep '.exe$' | xargs git rm --cached

Проблема с вашим git rm -r Команда состоит в том, что он будет преобразовываться только в каталоги, чье имя оканчивается на .exe, что явно не то, что вы хотите.

0 голосов
/ 02 марта 2020

Избегайте подстановочного знака, чтобы Git видел его, а не вашу оболочку:

git rm -n --cached \*.exe

(затем повторите без -n, если вам нравится то, что вы видите)

...