Можно ли повторно открыть закрытую ветку в Mercurial?

132

Я понимаю, что в Mercurial можно закрыть именованную ветку, чтобы она не отображалась в hg branchesсписке:

hg commit --close-branch -m 'close badbranch, this approach never worked'

Можно ли позже снова открыть ветку при необходимости?

Лоран Пинтер
источник
13
Вы должны просто попробовать, лучший способ научиться - экспериментировать, а поскольку репозитории дешевы с Hg, просто сходите с ума.
Лассе В. Карлсен
1
Маленький грязный секрет: «ветка» в языке Hg - это просто еще один способ сказать «текстовая метка, связанная с фиксацией». «Ветвь» может иметь много разных заголовков для множества разных коммитов, которые не связаны.
user2864740

Ответы:

164

Вы можете просто hg updateперейти в закрытую ветку, затем сделать другую, hg commitи она автоматически откроется.

closedФлаг используется только для фильтра из закрытых веток из hg branchesи , hg headsесли вы не используете --closedопцию - это не мешает вам использовать ветки.

Тим Делани
источник
20
Фиксация ничего не сделает, если нет чего-то, что можно было бы зафиксировать, поэтому вам может потребоваться внести безвозмездные изменения, чтобы это произошло.
Фрэнсис Аптон IV,
1
Спасибо, что указали на это - я предполагал, что изменения подразумевались при выполнении фиксации, но, конечно, если вы просто хотите удалить закрытый флаг, вы не можете без изменений.
Тим Делани,
3
Тег достаточно, чтобы сделать его фиксируемым.
devlord
Это может работать из интерфейса командной строки, я еще не пробовал, но TortoiseHg не позволит вам выполнить обновление до закрытой ветки. Если вы попытаетесь это сделать, кнопка «Обновить» будет отключена. Чтобы заставить это работать, мне пришлось обновить ветку до закрытия набора изменений (фактически родительского), а затем обновить до закрытого набора изменений. Странно то, что когда вы обновляете до родителя, TortoiseHg утверждает, что близкий набор изменений (потомок) является родителем. Как бы то ни было, он отлично работает, когда вы прыгаете через правильные обручи.
DaveN59 07
Использовал его (командная строка через терминал в phpstorm) и работает как шарм, спасибо
Mathieu Dierckx
15

Вы можете повторно открыть ветку, используя флаг «-f» при «создании» ветки.

Нет, эта команда создаст новую ветку с тем же именем.

Просто забудь, что он закрыт. Переключитесь на ветку, внесите изменения и зафиксируйте. Он будет автоматически снова открыт. Когда вы закончите, вы можете закрыть его снова.

Рафаэль Пикколо
источник
Я думал, что, в отличие от Git, именованные ветки Mercurial постоянны, и поэтому имена этих веток нельзя использовать повторно. Что я путаю? Мы говорим о нескольких головках для одной и той же ветки?
Нейт Кук,
2

попробуйте следующее:

hg pull && hg update branch_name

Теперь внесите небольшое изменение в один из файлов, а затем зафиксируйте его.

 hg commit -m "minor change"

затем нажмите это

hg push -b . 

Теперь вы сможете нормально работать.

Дипендра
источник
-3

Попробуй это.

Перед выполнением переключитесь на закрытую ветвь. (рт. ст. вверх closed_branch)

hg st

коснуться

добавить

hg commit -m 'повторное открытие закрытой ветки'

Это повторно откроет закрытую ветку.

Geetanjali
источник
12
Это добавление в репозиторий бесполезного пустого файла, это неправильно.
Рафаэль Пикколо