Git: необходимо рекурсивно 'git rm' содержимое всех папок bin и obj

Кто-то случайно отправил в репозиторий все свои папки bin и obj (таких папок около 40). Я хотел бы сделать git rm -r на всех этих папках. Есть команда, чтобы сделать это?

3 ответа

Решение

Иметь резервные копии,

 find . -type d -name bin -exec git rm -r {} \;

 find . -type d -name obj -exec git rm -r {} \;

Обновить

С помощью bash вы можете установить купленную globstar и быть счастливым:

 shopt -s globstar
 git rm -r **/{obj,bin}/

Наконец, если вам нужно удалить их из истории хранилища, посмотрите на git filter-branch и прочитайте раздел "Удаление объектов" из Pro Git Book

Как только вы вернетесь (сохраните файлы в истории) или сбросите коммит,

git reset --hard

Как только эти файлы игнорируются,

git clean -xdf

Я использую это, чтобы очистить перед перестройкой решения. Кажется, vs использует некоторые DLL даже после извлечения из другой ветви или слияния.

Вам не нужно прибегать к фильтрации ветки. Интерактивный ребаз сделает. Помните флаг --preserve-merges.

Надеюсь это поможет.

Другой вариант - отменить оскорбительный коммит git revert,

Другие вопросы по тегам