Я фиксировал (не продвинутый) много файлов локально (включая удаление двоичных файлов и добавление...) и теперь когда я пытаюсь продвинуть его, занимает много времени. На самом деле я испортил свою локальную repo историю.
Как я мог избежать этой ошибки в будущем? Я могу преобразовать ряд локального пересмотра 1-> 2-> 3-> 4 к 1-> 2 с 2 являющийся заключительным пересмотром локального клона?
править: так как я спешил, я запустил новый удаленный repo с нуля с пересмотра 4. В будущем я пойду с отмеченным ответом, поскольку это кажется легче, но я вырою другие решения видеть истину. Спасибо за Вашу поддержку.
Mercurial история неизменна, вы не можете удалить с помощью обычных инструментов. Однако вы можете создать новое репо без этих файлов:
$ hg clone -r 1 repo-with-too-much new-repo
, которое берет только нулевую и одну ревизии из старого репо и помещает их в новое репо. Теперь скопируйте файлы из четвертой ревизии в новое репо и выполните фиксацию.
Это избавляет от этих промежуточных наборов изменений, но в любом репо, которое у вас есть в дикой природе, они все еще есть, поэтому, когда вы потянете
, вы получите их обратно.
В общем, как только вы отправили набор изменений, он уже доступен, и если вы не сможете заставить всех, у кого есть клон, удалить его и повторно клонировать, вам не повезло.
Из вашего вопроса не ясно, были ли внесены эти изменения. Если они все еще местные, от них более или менее легко избавиться. преобразовать - это один из вариантов. Вы также можете использовать MQ (непрерывные очереди). См. Подробное объяснение в вики-статье EditingHistory . Он рекомендует использовать MQ как самый простой подход.
Чтобы предотвратить подобные ошибки, вам, вероятно, следует добавить ловушку для отклонения «плохих» коммитов, учитывая, что вы можете описать их программно;)