Как навсегда удалить (стереть) файлы из истории? - PullRequest
5 голосов
/ 24 апреля 2010

I совершено (не отправлено) много файлов локально (включая удаление и добавление двоичных файлов ...) и теперь, когда я пытаюсь нажать это занимает много времени. На самом деле я испортил свою локальную историю репо.

Как я мог избежать этой ошибки в будущем? Могу ли я преобразовать набор локальной ревизии 1-> 2-> 3-> 4 в 1-> 2 , где 2 является последней ревизией локального клона?

edit: так как я спешил, я запустил новое удаленное репо с нуля с ревизией 4. В будущем я пойду с помеченным ответом, поскольку это кажется более легким, но я найду другие решения, чтобы увидеть правду. Спасибо за вашу поддержку.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

Из вашего вопроса не ясно, были ли эти изменения продвинуты.Если они все еще местные, вы можете более или менее легко избавиться от них. конвертировать является одним из вариантов.Вы также можете использовать MQ (ртутные очереди).Проверьте EditingHistory вики-статью для подробного объяснения.Рекомендуется использовать MQ как самый простой подход.

Чтобы предотвратить подобные ошибки, вам, вероятно, следует добавить хук для отклонения «плохих» коммитов, учитывая, что вы можете описать их программно;)

1 голос
/ 24 апреля 2010

Mercurial история неизменна, вы не можете удалить с помощью обычных инструментов. Однако вы можете создать новый репо без этих файлов:

$ hg clone -r 1 repo-with-too-much new-repo

, который берет только ревизию ноль и одну ревизию из старого репо и помещает их в новый репо. Теперь скопируйте файлы из четвертой редакции в новый репозиторий и зафиксируйте.

Это избавляет от этих внутренних изменений, но в любом репо, которое есть у вас в дикой природе, они все еще есть, поэтому, когда вы pull вернете их обратно.

Как правило, после того, как вы выдвинули ревизию, она уже есть, и если вы не можете заставить всех, у кого есть клон, удалить ее и отреагировать, вам не повезло.

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