2016-05-20 3 views
1

Вчера вечером я начал слияние; и забыл его совершить.Как прервать слияние Hg без потери рабочих изменений?

Позже я внесла некоторые изменения в рабочую копию.

Сегодня я больше не хочу, чтобы это слияние вообще (как я буду сливаться с новой редакцией), но я хочу сохранить местные рабочие изменения. Изменения не зависят от разрешения слияния.

Как локальные изменения могут быть сохранены (и/или повторно применены позже) при прерывании текущего слияния?


Использование shelve на локальных изменений не допускается:

$ hg shelve foo/bar 
abort: cannot shelve while merging 

Использование hg up -C, нормальный способ «прервать слияние», позволит устранить локальные изменения.


Это не нравится, потому что How to 'hg merge' without affecting the working directory? уже начали слияние, просто не совершал. Ответы, которые связаны с окончанием коммита сначала, а затем выбор изменений подходит, если их можно просто показать, хотя вопрос - это, ориентированный на «прерывание без фиксации».

+0

Могли бы вы экспортировать изменения, которые хотите сохранить в виде патчей? Я предполагаю, что это будет немного трудоемким. – Nanhydrin

+0

@ Нангидрин Я увлекаюсь любым процессом, который можно было бы сделать, «минимизируя» утомительность восстановления в таких случаях. Я нашел волшебство, чтобы обмануть Hg, думая, что это не было в середине слияния, но похоже, что это должно храниться как волшебный трюк:} – user2864740

ответ

3

Самым простым решением является, вероятно, чтобы записать изменения временно в секрете фиксации, а затем вернуться к этой фиксации, например:

hg resolve -m -a      # mark all files as resolved 
hg commit -s -m "Savepoint."   # Temporary commit. 
hg update .^       # Back to original revision. 
             # (Use ".^" in cmd.exe on Windows.) 
hg revert -r tip --all     # Revert files to saved commit. 
hg diff        # Verify that you've got all the changes. 
hg strip -r tip --keep     # And discard the temporary commit. 

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

Если вы используете расширение evolve, то желательно, чтобы hg prune -r tip был предпочтительнее hg strip -r tip --keep, так как он по-прежнему сохраняет временную фиксацию (скрытую) на случай, если вам нужно будет обратиться к ней позже.

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