В чем разница между hg revert и hg backout?

Оба hg revert и hg backout возвращают изменения, сделанные предыдущей ревизией. В чем разница между двумя?

Ответ 1

Учитывая историю изменений:

A --- B --- C --- D --- E
          [bad]        (*)

hg revert -r B: Оставайтесь с текущей версией, но обновляйте рабочий каталог начиная с версии B. Он имеет эффект патча, который отменяет изменения C, D и E.

hg backout -r C: обновить рабочий каталог, чтобы он содержал слияние версии C parent (B) и текущей ревизии, сохраняющей изменения между двумя версиями (рабочий каталог все еще содержит изменения ревизия D и E). Это влияет на патч, примененный на E, отменяя изменения только C.

Возможно, вы захотите отредактировать некоторые файлы, если не все из C были плохими. Не забудьте сделать a hg commit в любом случае:

A --- B --- C --- D --- E --- F
          [bad]              (*)