2016-02-24 3 views
0

Я клонировал Mercurial repo и сделал кучу локальных работ, и забыл, чтобы создать ветку функций для указанной работы.Перемещение неустановленных + незафиксированных изменений между филиалами Mercurial

Нормальный поток:

  1. Clone
  2. Создание филиала
  3. Переключитесь в этой отрасли
  4. Сделайте свою работу в этой отрасли
  5. Нажмите, что филиал
  6. обзор Код
  7. Если проверка кода проходит, слейте ветвь w/default (loca LLY)
  8. Нажмите слиты изменения default
  9. Закрыть функции филиала

Так что мне нужно, чтобы создать новую ветку, порт все мои unstaged/неподтвержденные изменения кода (сделанные default) по этой ветви (так что default теперь чист, а новая ветвь содержит мои изменения), а затем нажмите мою ветвь функции.

Я создал новую ветку через hg branch new_feature. Но после заливки документов Merucrial я не могу понять следующий шаг.

Итак, я спрашиваю: Как мне переместить (а не просто скопировать) все мои неустановленные/незафиксированные изменения с default на мою ветку new_feature)?

+1

Не можете ли вы просто задать имя ветви, а затем зафиксировать? 'hg branch feature-X', за которым следует нормальная функция hg commit -m, добавленная функцией X" '? –

+0

Спасибо @ LasseV.Karlsen (+1) - Думаю, я не знаю ... делает ли 'hg branch' clone' default', как он выглядит в настоящее время (включая мои изменения), или он клонирует 'default' как он выглядел, когда я первоначально клонировал репо? – smeeb

+0

Он не делает этого, он просто записывает, какое название ветки вы хотите зафиксировать.Ничего не меняется в вашей рабочей папке. –

ответ

2

Вам не нужно ничего делать, в частности.

Изменения в вашей незанятой рабочей папке являются текучими, и вы можете установить имя филиала до того, как совершите, не теряя при этом своих изменений.

Если вы в командной строке, просто сделать это:

hg branch feature-X 
hg commit -m "Added feature X" 

Если вы используете TortoiseHg просто нажмите на «Отрасль: по умолчанию» кнопка чуть выше фиксации поле ввода сообщения и выберите «Открыть новую именованную ветвь "и дайте ей имя, затем нажмите« ОК », а затем зафиксируйте как обычно.

Установка имени ветки, используемой во время фиксации, фактически не изменяет вашу рабочую папку, она не выполняет обновление, она ничего не делает, кроме записи в метаданных, что должно быть именем ветки.

Также обратите внимание, что это позволит вам создать новую ветвь для фиксации. Если вы хотите, чтобы продолжал на существующей ветке, вам сначала нужно обновить ее до головы, и это может привести к изменениям в вашей рабочей папке. Однако вам не нужно делать это, если вы хотите создать новую ветку.

+0

Спасибо @Lasse V. Karlsen (+1) - вы не обращаете внимания на адреса мой вопрос выше (по вашему комментарию)? Еще раз спасибо! – smeeb

+0

В этом отношении не стоит беспокоиться, так как выполнение 'hg branch X' будет просто записывать, что * следующее коммитирование должно быть на ветке X *. –

+0

Помните, что ветка, возможно, не самая лучшая вещь для создания единственной функции. Может быть, закладка - лучший вариант в этом случае, чем ветка, которая будет называть ее имя навсегда, даже после того, как она снова будет объединена с дефолтом? – planetmaker

Смежные вопросы