Может разобрать кеш заменить данные ядра

В главе 9 книги Pro Git есть раздел о Удаление объектов .

Позвольте мне кратко изложить здесь следующие шаги:

git filter-branch --index-filter \
    'git rm --cached --ignore-unmatch path/to/mylarge_50mb_file' \
    --tag-name-filter cat -- --all

Как и ранее описанная опция перезагрузки, filter-branch выполняет операцию перезаписи. Если вы опубликовали историю, вам нужно будет --force нажать новые ссылки.

Подход filter-branch значительно более мощный, чем подход rebase, поскольку он

  • позволяет вам работать на всех ветвях / refs сразу,
  • переименовывает любые теги на лету
  • работает чисто, даже если было выполнено несколько слияний с момента добавления файл
  • работает чисто, даже если файл был добавлен / удален несколько раз в истории (a) branch (es)
  • не создает новые, несвязанные коммиты , а скорее копирует их при изменении связанных с ними деревьев. Это означает, что сохраняются такие вещи, как подписанные коммиты, фиксации заметок и т. Д.

filter-branch также сохраняют резервные копии, поэтому размер репо не будет уменьшаться немедленно, если вы не закончите блокировку и вывоз мусора собирать:

rm -Rf .git/refs/original       # careful
git gc --aggressive --prune=now # danger

16
задан Allen 12 October 2013 в 05:46
поделиться