При использовании git filter-branch
:
--tree-filter
является очень медленным; используйте --index-filter
, если это вообще возможно. - Настройте каждый фильтр так, чтобы он не сообщал о состоянии отказа.
Вторая точка - это Lasse V. Карлсен упомянул в комментарии : вы, вероятно, захотите, чтобы ваша команда фильтра дерева прочитала rm -f datafile_early.RData datafile_later.RData
, чтобы удалить любой из этих файлов, и затем преуспела бы, даже если ничего не удалила.
Чтобы обратиться к первому Обратите внимание, что древовидный фильтр, состоящий из rm
команд, может быть заменен индексным фильтром, состоящим из git rm --cached
команд. В этом случае подходящей командой сопоставления будет:
git rm --cached --ignore-unmatch datafile_early.RData datafile_later.RData
Поэтому вся команда git filter-branch
будет , вероятно:
git filter-branch \
--index-filter \
'git rm --cached --ignore-unmatch datafile_early.RData datafile_later.RData' \
--tag-name-filter cat -- --all
(необязательно, удалите обратную косую черту sh -настрочные последовательности, чтобы все это было одной строкой), которые должны выполняться значительно меньше времени, чем --tree-filter
вариант.