Прежде всего, давайте разобраться, как выглядит ваш график. Предположим, что наконечник вашего разветвленного репо - x
, и он имеет линейную историю без ветвления. Так что ваша история выглядит следующим образом:
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
Теперь вы сделали четыре фиксаций именно A
, B
, C
и D
с A
является самой старой и D
будучи последнюю. Теперь вы график выглядит примерно так:
x -> A -> B -> C -> D
Обратите внимание на истории раньше, чем x
цел, ее не учтенные выше, потому что его не требуется часть информации для того, что мы обсуждаем.
Теперь вы хотите создать запрос на растяжение, содержащий только набор изменений B
. Это невозможно в текущем состоянии, потому что основное репо не знает о A
, которое также является родителем B
. У вас не может быть ребенка до тех пор, пока он не будет/parent/s.
Так что если мы хотим просто сделать запрос на растяжение B
изменений, нам необходимо rebase
на x
.
rebase
является расширением в Mercurial, и вы можете включить его, добавив следующие строки в .hg/hgrc
[extensions]
rebase =
Давайте перебазироваться раз мы расширение включены.
hg rebase -s B -d x
Это приведет:
x -> A
\-> B -> C -> D
Теперь вы можете создать запрос тянуть, потому что родитель B
«s является x
. У вас также может быть более чистое состояние истории, перезагрузив C
снова A
. Это приведет к появлению двух ветвей: одного, содержащего наборы изменений, которые вы хотите нажать, других локальных наборов изменений.Перебазирования снова выглядит как:
hg rebase -s C -d A
И результирующее состояние истории:
x -> A -> C -> D
\-> B
Теперь вы можете легко создать запрос, содержащий только тянуть B
ревизии.
Связанные Ссылка:
Rebase Extension