2014-11-20 3 views
0

У меня есть большой файл, который был зафиксирован в начале нескольких ветвей. Этот файл был позже изменен, перемещен или удален из ветвей. Проблема в том, что файл слишком большой для GitHub, поэтому я хочу удалить его (все его версии) со всех сторон. Как это может быть сделано?Как удалить файл в начале нескольких ветвей из истории git?

Я видел рецепт для изменения слияния, содержащего такой файл (https://stackoverflow.com/a/308684/42973), или метод удаления файла из (по-видимому) одного ветви (https://stackoverflow.com/a/5563603/42973), но они не применяются или не работают в этом случае.

+0

Вы, вероятно, ищете 'git filter-branch', здесь. – Jubobs

+0

@Jubobs: Это действительно то, что используется в ответе, с которым я связан. Однако этот ответ не сработал для меня (я думаю, потому что условия, как я описываю). Итак, да, похоже, что «фильтр-ветвь» - хорошая идея, но мне любопытно, как ее использовать в моем случае. – EOL

ответ

1

Используйте BFG Repo-Cleaner, более быструю и быструю альтернативу git-filter-branch, специально разработанную для удаления нежелательных файлов из истории Git.

Вы должны внимательно следить за usage instructions, но основная часть всего этого:

$ java -jar bfg.jar --strip-blobs-bigger-than 50M my-repo.git 

Любые файлы более 50Мб размера (которые не в вашем последнее совершить) будут удалены из Git истории хранилища.

BFG обычно не менее 10-50x быстрее, чем работает git-filter-branch, и в целом он прост в использовании.

Полное раскрытие информации: Я являюсь автором BFG Repo-Cleaner.