Скажите, что коммит 666
- это тот, который нам нужно пропустить. Хитрость заключается в том, чтобы git
получить всех коммитов, кроме 666 . К счастью, git-svn дает нам аргумент -r
.
Сначала обновите коммит непосредственно перед пропуском коммита:
git svn fetch -r BASE:665
Затем обновите все после плохой фиксации в подсказке Subversion:
git svn fetch -r 667:HEAD
Это должно дать вам хранилище со всем, кроме коммита, который вы хотите пропустить. При необходимости вы можете пропустить несколько ревизий, просто повторите приведенные выше команды для любого диапазона (-ов) коммитов, которые вы хотите сохранить.
Пропуск ревизий может пойти наперекосяк, если вы пропустите изменения файла, на которые повлияют более поздние ревизии (например, вы пропустите изменение или создание файла, и этот файл будет изменен позже в ревизии, которую вы извлекаете).
Тем не менее, я только что сделал это, чтобы пропустить ревизию, в которой кто-то скопировал весь репозиторий Subversion в каталог tags/
, а затем удалил явно недействительный тег. Я использовал вышеописанный трюк, чтобы пропустить ревизию, в которой был создан недействительный тег (Git пытался загрузить весь репозиторий), позволить ему извлечь удаление (которое он просто проигнорировал), и все было в порядке с миром.