Как мне «переключиться» с Mercurial - PullRequest
62 голосов
/ 21 июля 2009

Как мне сделать то, что svn switch делает в Mercurial?

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

Ответы [ 5 ]

62 голосов
/ 21 июля 2009
hg update -r<REV>

Команда update переключится на указанную ревизию.

33 голосов
/ 22 июля 2009

Команда переключения в Subversion делает две вещи:

  1. Обновите рабочую копию, чтобы отразить новый URL в хранилище. Это поведение похоже на «svn update» и является способом переместить рабочую копию в ветку или тег в том же хранилище.

  2. Переписать метаданные URL рабочей копии, чтобы отразить только синтаксическое изменение. Используется при изменении корневого URL-адреса хранилища (например, схемы или имя хоста), но ваша рабочая копия все еще отражает то же каталог в том же хранилище.

Команда hg update foo наиболее точно соответствует первому при переходе, скажем, с /trunk на /branches/foo в Subversion.

Если вы хотите сделать последнее, просто отредактируйте .hg/hgrc. Вы найдете раздел [paths], который выглядит следующим образом:

[paths]
default = http://example.net/something

и вы можете изменить этот push-pull URL-адрес по умолчанию на что-то другое, как считаете нужным. Вы также можете добавить другие записи в этот раздел, если вам часто нужно пуш / пул из других мест. Если вы хотите вытащить из одного места, но нажать на другое, добавьте запись default-push.

23 голосов
/ 12 сентября 2011

Если вы хотите переключить ветки, сделайте следующее:

Сначала проверьте, какие ветви доступны, введите hg branches. Это перечислит все доступные ветви.

Затем определите, над какой веткой вы сейчас работаете, введите hg branch. Это скажет вам, какая у вас текущая ветка.

Наконец, чтобы переключить ветку ( и стереть все локальные изменения ), введите hg update -C name-of-branch. Это переключит вас на указанную вами ветвь.

Подтвердите, набрав hg branch еще раз.

1 голос
/ 24 октября 2016

Для переключения на удаленную ветку 'tip':

hg pull -u <remote_branch>

Для местного филиала (уже обновленного) просто:

hg update -r <local_branch>
0 голосов
/ 08 июля 2011

Альтернативный ответ, в случае, если под «веткой» вы подразумеваете «еще один клон репо, который живет в каком-то произвольном месте в сети»: вы не можете.

Другими словами, учитывая репо на hg.a.com и клон этого репозитория hg.b.com, нет такой команды, как

hg switch hg.b.com .

(используя там язык svn, предполагая, что ваш текущий каталог является корнем клона hg.a.com).

Однако вы можете клонировать hg.a.com, локально клонировать этот клон (который должен быть относительно недорогим), а затем извлекать информацию с hg.b.com, чтобы получить дополнительные изменения, которые могут там существовать.

...