Я думаю, что вы на правильном пути с командой git filter-branch
, которую вы пытались. Проблема в том, что вы не сказали ему хранить файл в каких-либо коммитах, поэтому он удаляется из всех них. Теперь, я не думаю, что есть способ напрямую сообщить git-filter-branch
, чтобы пропустить любые коммиты. Однако, поскольку команды выполняются в контексте оболочки, не должно быть слишком сложно использовать оболочку для удаления всех, кроме последнего числа X исправлений. Что-то вроде этого:
KEEP=10 I=0 NUM_COMMITS=$(git rev-list master | wc -l) \
git filter-branch --index-filter \
'if [[ ${I} -lt $((NUM_COMMITS - KEEP)) ]]; then
git rm --cached --ignore-unmatch big_manual.txt;
fi;
I=$((I + 1))'
Это будет держать big_manual.txt
в последние 10 фиксаций.
Это, как сказал Чарльз, я не уверен, что это лучший подход, поскольку вы фактически уничтожаете всю точку VCS, удаляя старые версии.
Вы уже пробовали оптимизировать репозиторий git с помощью git-gc
и/или git-repack
? Если нет, это может стоить попробовать.
Я думаю, что это поможет, если вы дадите дополнительную информацию об этом файле и о том, что вы пытаетесь сделать. Это будет одно событие или вы планируете очистить файл и регулярно переписывать историю репозитория? Почему вы отслеживаете файл в git, если вам не нужно сохранять свою историю? Насколько велик ваш голый репозиторий, и действительно ли это проблема, если он большой? –
это руководство для моей программы, я пишу с помощью Apple Pages (текстовый процессор) и включает в себя множество изображений. Я храню его в GIT в основном, поэтому я могу поделиться им между моим стационарным компьютером и моим ноутбуком, и поэтому я и отменяю, если что-то пойдет не так. В настоящее время репозиторий составляет 450 МБ. Я не решаюсь работать с файлом, потому что я знаю, что размер репозитория увеличивается. Вместо того, чтобы переосмыслить мое решение для резервного копирования, я подумал, что лучше избавиться от самых старых версий. Я ежедневно делаю полный снимок репозитория и загружаю его, но дисковая квота - 3 ГБ. – neoneye
Да, я надеюсь, что это возможно сделать время от времени. – neoneye