Ответ 1
Вы можете обойти эту проблему, вызвав приглашение оболочки git filter-branch
оценить glob для вас (при условии, что вы включили там extglob):
git filter-branch --index-filter "git rm --cached --ignore-unmatch $(ls -xd Modules/!(ModuleA|ModuleB))"
Обновление: Вам нужно указать параметры ls
: -x
для разделения записей вместо пробела вместо новой строки и -d
для печати имени каталога вместо его содержимого. Для более чем нескольких файлов вам также может потребоваться добавить -w 1000
(или аналогичное большое количество), чтобы сделать ls
предполагать очень широкий терминал и вписывать все в одну строку.