Как переписать исторические ревизии файла с последней ревизией в git? - PullRequest
2 голосов
/ 15 июня 2011

Вроде странный вопрос, но вот мой сценарий: я случайно добавил изображение SVG с большим встроенным PNG в git, зафиксировал и отправил. Вчера я заметил проблему и исправил ее, удалив встроенный PNG, поэтому размер этого изображения увеличился с 1500 до 35 КБ. Проблема, которая у меня есть, заключается в том, что мне больше не нужна историческая версия (занимающая 1500 КБ), но мне НУЖНО, чтобы изображение (обновленное) присутствовало в этих старых ревизиях. Поэтому я не хочу просто удалять историю изображения, так как я хочу, чтобы старые ревизии продолжали работать - я хочу сдвинуть новую версию назад во времени, когда я зафиксировал исходную ревизию, так что это как если бы В прошлом я никогда не передавал файл большего размера, только правильный файл меньшего размера. Это возможно сделать?

Я также использую github для размещения репозитория, и мне нужно будет загрузить обновленную всю историю - это легко сделать?

Ответы [ 2 ]

4 голосов
/ 15 июня 2011

Если вы еще никому не передавали свой репозиторий, вы можете легко сделать это с помощью git rebase -i. Отметьте соответствующий коммит для редактирования, а затем замените файл изображения при необходимости.

Подробнее см. В документах .

Вы можете использовать опцию -f для git push, которая заставит вашу отредактированную историю переписать ее на Github. Имейте в виду, что это может немного испортить ситуацию для любого, кто извлек репозиторий.

1 голос
/ 15 июня 2011

Я думаю, вам нужно было бы сделать довольно грязную операцию, включающую выборку вишен, перебазирование и обычное волшебство git.

Я бы на самом деле не беспокоился об этом.Оставь как есть.Это только означает, что вы будете загружать дополнительные килобайты один раз каждый раз, когда репозиторий клонируется.В противном случае вы просто толкаете и вытаскиваете крошечный дифференциал ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...