merge
- это способ переноса изменений из одной ветки в другую. Я знаю, что вы объединили default
в функцию, но теперь вы пошли другим путем. Вот пример, когда пронумерованные ревизии поступают от других людей, а помеченные буквами ревизии - от вас:
Прежде чем что-либо делать, вы клонируете и получаете следующее:
[1]---[2]---[3]---[4] (default branch)
затем вы создаете свою ветку с именем 'feature' и делаете две фиксации на ней, что дает:
[1]---[2]---[3]---[4] (default branch)
\
[A]---[B] ('feature' branch)
затем вы hg pull
, чтобы получить изменения по умолчанию, поскольку вы разошлись в своем локальном репозитории:
[1]---[2]---[3]---[4]---[5]---[6] (default branch)
\
[A]---[B] ('feature' branch)
теперь вы хотите, чтобы их изменения (5 и 6) были интегрированы в вашу ветку, поэтому вы должны:
hg checkout feature # make sure you're looking at the he head of your branch
hg merge default # merge default into your branch
что дает:
[1]---[2]---[3]---[4]---[5]---[6] (default branch)
\ \
[A]---[B]---[C] ('feature' branch)
Если я правильно понимаю, вы уже сделали все это, поэтому теперь вам просто нужно привести свою ветку, включая новую фиксацию слияния, C, в состояние по умолчанию, что снова делается с помощью слияния:
hg checkout default # hop back to default, files look like [6] and [A] and [B] are missing
hg merge feature # merge feature into default brining [A] and [B] in
что дает:
[1]---[2]---[3]---[4]---[5]---[6]---[7] (default branch)
\ \ /
[A]---[B]---[C] ('feature' branch)
Похоже, что таким образом проделано много работы, но на практике это обычно просто:
hg branch feature
....work....
hg commit
hg pull
hg merge default
hg checkout default
hg merge feature
и если pull
не привел к новой работе от других, вы можете пропустить слияние default с вашим.
Это создает два новых набора изменений слияния. Их легко спрятать на hg log
, если вы сочтете их бесполезными (некоторым людям нравится записывать, в каком направлении происходило каждое слияние), но если вы хотите полностью их избежать, вы можете использовать bookmarks
(очень похоже на ветки git) вместо «named ветки »для ваших функций - тогда вы избежите набора изменений слияния, когда вернетесь, поскольку это будет духовным эквивалентом того, что git называет слиянием« быстрой перемотки вперед ».
person
Ry4an Brase
schedule
06.09.2013