Что делать, если у одной ветви две головы? Я пришел к этой ситуации несколько недель назад, почему-то тогда я их не сливал, а просто продолжал развиваться на одной голове. Теперь я хочу избавиться от другой головы. Что я должен делать? Должен ли я просто объединить их после стольких наборов изменений?
Итак, у вас есть это:
o--o--o--A--B <- older unnecessary head
\
1--2--3--4--5--6 <- newer ‘good’ head
... и вам не нужны A
и B
, безусловно, на 100% уверены. Если вы не уверены , и, возможно, в A
и B
есть вещи, которые можно спасти, лучше объединить головы, чтобы объединить изменения. Как сказал Аарон, Mercurial хорош в этом.
Теперь у вас есть два варианта:
B
. Если наборов изменений A
и B
присутствуют в других репозиториях, которыми вы не управляете , например, если другие люди втянули A
и B
в свои репозитории, или вы отправили A
и B
в общедоступный репозиторий (скажем, Bitbucket), то вы выпустили A
и B
в дикую природу. и не могу от них избавиться. Вы должны сделать фиктивное слияние :
$ hg up 6
$ hg --config ui.merge=internal:local merge
Это позволит игнорировать любые изменения из A
и B
при слиянии.
Если, с другой стороны, A
и B
являются частными , вы можете удалить их:
$ hg strip A
(Rev A
и потомков убрали; включите расширение MQ, чтобы сделать strip
доступным.)
Или создайте новый клон вашего хранилища без наборов изменений A
и B
:
$ hg clone myrepo myrepo2-clone -r 6
(Только кн. 6
и предки добавлены в клон.)
Голова создается, если вы фиксируете некоторые изменения (добавьте набор изменений в существующий набор изменений). Если это происходит несколько раз для одной и той же ревизии, создается несколько головок. В этом нет ничего необычного или плохого.
Обычное решение - объединить их. Mercurial очень хорош при слиянии. Скорее всего, результат все равно будет скомпилирован и запущен без какой-либо ручной работы.
Просто запустите hg merge
, а затем hg status
и hg diff
, чтобы увидеть, что изменилось между ними. Если вам нравится результат, передайте его. Если вам это не нравится, update
отправляйтесь чистить свое рабочее место.
Чтобы избавиться от головы, в документах объясняется, как это сделать .
Используя MQ, вы также можете превратить вторую головку в независимую ветвь (так что вы можете сохранить ее, но это вас не побеспокоит). Смотрите ответ: Как создать ветку для ревизии без подсказки в Mercurial?