Похоже, вы случайно создали ветку с глупым именем. Скорее всего, вы захотите повторно применить изменения с именем ветви, которое имеет смысл. Не существует полностью автоматического способа сделать это, но вы можете извлечь каждый набор изменений в виде патча, вернуться к моменту, когда вы напутали, и повторно применить эти изменения в соответствующей ветке.
По сути, вам нужно посмотреть журнал изменений; вероятно, запустив hg out
, чтобы увидеть, чего не хватает в центральном хранилище. Запишите все обороты, которые вы хотите сохранить.
Следующее обновление до последней хорошей ревизии. Убедитесь, что вы находитесь в той ветке, в которой хотите, чтобы ваши коммиты были включены.
Теперь вы будете применять каждое из внесенных вами изменений и фиксировать каждое из них. Вы можете автоматизировать этот процесс примерно так:
BADREVS="123 124 125 126"
recommit() { hg di -c $1 | patch -p1; hg ci -m "$(hg log -r $1 --template '{desc}')";}
for rev in $BADREVS; do
recommit $rev
done
Теперь вы дважды вносите изменения в свой локальный репозиторий; один раз как коммит на странной ветке и снова на правой ветке. Вы можете отправить эти изменения в центральный репозиторий, используя hg push -b GOODBRANCH
, чтобы увеличивались только изменения в правой ветви; Кроме того, вы можете установить расширение полосы , чтобы удалить изменения, которые вы не хотели, из локального репо, а затем вы можете нажать как обычно.
По звуку этого; вам все равно придется иметь дело с изменениями, внесенными в центральное хранилище, прежде чем вы сможете нажать, так как вы передали изменения из другого репо. Возможно, вы захотите сделать это слияние после того, как вы очистите историю изменений в локальном репо.