Mercurial как откатить на тег? - PullRequest
3 голосов
/ 12 января 2011

Я немного озадачен тем, как выполнить откат к тегу в Mercurial.(что я очень новичок)

Скажем, у меня есть тег с именем "Версия-1.0", который был несколько ревизий назад.Допустим, мы находимся сейчас на r400

Теперь, если мои менеджеры скажут мне, что им не нравится направление, в котором идут дела, и в основном хотят бросить все, начиная с этого тега, и вернуться к Версии-1.0.

Ну, я могу проверить этот тег с помощью:

hg update -r Version-1.0

Хорошо, теперь я вернулся к тегу версии 1.0,и если бы мне никогда не пришлось вносить изменения, это было бы хорошо.Однако, как только я сделаю изменения и зафиксирую, у меня теперь есть 2 главы (мои новые изменения в Версия-1.0 и r400 - вещи, которые менеджеры хотят отменить).

Так что теперь мне нужно слить с r400.Я не хочу(Я не хочу стереть все эти изменения с лица земли, я хотел бы, чтобы они остались в моей истории, чтобы я мог вернуться к ним позже, если руководство снова передумает), но в настоящее время я не хочу ни одного из них.

Что мне делать?


update

Ответ гласил:

Вы можете клонировать весь репозиторий вплоть дотегом, а затем используйте этот клон в качестве своего «нового» центрального репозитория.

Если мой центральный репозиторий размещен на bitbucket, я не уверен, как это сделать.Если текущий адрес находится по адресу URL https://jisaacks@bitbucket.org/jisaacks/hgml, и я хочу клонировать его в тег нового репозитория с именем hgml2 (который еще не существует), я попытался выполнить эту команду локально на своем компьютере:

hg clone -r Version-1.0 https://jisaacks@bitbucket.org/jisaacks/hgml https://jisaacks@bitbucket.org/jisaacks/hgml2

Я получаю эту ошибку:

abort: невозможно создать новый http-репозиторий

Ответы [ 3 ]

3 голосов
/ 12 января 2011

Войдите в bitbucket и щелкните значок стрелки «Fork» в правом верхнем углу.Теперь вы можете открыть «расширенные настройки» для разветвления из тега.

Затем вы можете переименовать первый репозиторий во что-то вроде «myproject-покинутый-foo-changes» и повторно использовать исходное имя для разветвленного репозитория,где вы продолжите разработку.

edit : вы также можете выполнить no-op merge .Связанная вики-страница объясняет, что это может быть плохо, потому что ваша история будет заражена нежелательными изменениями, но я думаю, что в вашем случае это может быть именно то, что вы хотите, так как это сохранит ваши изменения, избегая при этом «переключения всего на новый репозиторий»."вопрос, на который вы жалуетесь.

1 голос
/ 21 июня 2015

«Правильный» способ сделать это в современном Mercurial - закрыть ветку:

hg up head-i-dont-like
hg commit --close-branch

Хотя изначально он был добавлен для закрытия именованных веток, он одинаково хорошо работает и с анонимными ветвями (что такое OPесть).В частности, он будет только влиять на заголовок, на котором он зафиксирован, а не на любые другие заголовки в одноименной ветви.

0 голосов
/ 05 октября 2017

Вы можете использовать hg revert. Следующая команда восстанавливает ваш репозиторий до определенного тега и отменяет все локальные изменения.

hg revert -r tagname --all
...