hg pull
просто извлекает новую историю, поэтому не влияет на незафиксированные изменения.
hg update
обновится до подсказки, но незафиксированные изменения объединятся с новым родителем.
Вы ничего не потеряете, хотя ваш инструмент слияния может работать, если в слиянии есть конфликты.
Обратите внимание, однако, что hg update -C
, будет "чисто" обновлять подсказку, выбрасывая незафиксированные модификации.
Пример
Создать простую базу данных с двумя изменениями. Первый набор изменений (0) состоит из двух строк. Второй набор изменений (1) имеет четыре строки.
C:\>md example
C:\>cd example
C:\example>hg init
C:\example>echo Line1 >file.txt
C:\example>echo Line2 >>file.txt
C:\example>hg ci -Am "first checkin"
adding file.txt
C:\example>echo Line3 >>file.txt
C:\example>echo Line4 >>file.txt
C:\example>hg ci -Am "2nd checkin"
Обновление до первого (более раннего) набора изменений с двумя строками.
C:\example>hg update 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\example>type file.txt
Line1
Line2
Внести изменения в файл, добавив еще одну строку. hg st
показывает, что изменение было внесено, но оно еще не было зафиксировано с hg ci
.
C:\example>echo Line5 >>file.txt
C:\example>hg st
M file.txt
Теперь обновите до новой ревизии. В этом случае инструмент слияния откроется, потому что «Line5» конфликтует с «Line3» в этом новом наборе изменений. Я разрешил объединение и сохранил.
C:\example>hg update
merging file.txt
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
C:\example>type file.txt
Line1
Line2
Line3
Line4
Line5
Ничего не потеряно!
Также ознакомьтесь с Mercurial: полное руководство и другие Руководства для начинающих .