2013-06-13 4 views
0

У меня есть хранилище под названием «MyProject» и в том, что у нас есть филиал «MyProject новые изменения»Объединить ветви локально

Я клонировал «MyProject» репозиторий в моей локальной машине, как C:/MyProject

и аналогично клонированные «MyProject новые изменения», как с.:/MyProject-новые изменения»

Оба хранилища имеют последние изменения после тянуть и объединить

Теперь мне нужны изменения F rom "MyProject-new changes" (ветвь) меняются в "MyProject" локально.

Как только я схожу, я не хочу фиксировать эти изменения. Я вернусь назад к изменениям при работе с изменениями ветвей. Я просто хочу интегрировать новые изменения и увидеть результаты на время.

Пожалуйста, дайте мне знать следующий

  1. Как объединить локально код из «MyProhect новых изменений» в «MyProject»
  2. Как я вернуться обратно MyProject раза я проверял.

ответ

0

Для этого вам нужен тестовый сайт, на котором вы можете проверить слияние. Обычно люди создают отдельный клон для экспериментов. Это дает вам простой способ вернуть изменения - просто удалите экспериментальный клон. Поэтому давайте начнем с создания другого клона MyProject и обновления последней фиксации в ветке default.

Предпочитаете ревизию 25 является последняя редакция в отрасли default. Вы можете обновить его командой hg up -r 25.

Предположительно, редакция 37 - это последняя редакция в MyProject-new changes. Вы можете объединить последние изменения с MyProject-new changes в ветку default с командой hg merge -r 37. После этого вы получите результат объединения в своем рабочем каталоге.

Поскольку вы работаете в отдельном клоне, вы можете совершить без сомнения. Зафиксируйте hg ci -m 'merge with new changes' и проверьте результат. Когда вы закончите тесты, вы можете просто удалить экспериментальный клон.

0

Самый простой способ - сделать полный клон вашего репозитория, слить и проверить содержимое вашего сердца и выкинуть репозиторий, когда вы закончите. @ Кирилл объясняет, как это сделать.

Но зачем это делать? Возможно, вы столкнетесь с проблемами или небольшими конфликтами слияния, которые вы исправите в клоне. Будет жаль, что он выбросит эту работу - вам, вероятно, понадобится ее в будущем. Конечно, вы могли бы просто сохранить клон, но я предлагаю пересмотреть ваше предположение: Почему бы вам не объединить две ветки?

У вас есть главная ветка (default) и ветвь с функциями new-changes, и вы хотите смело видеть, как они работают вместе.Вот два пути вы можете сделать это без клонирования репозитория:

  1. Чтобы сохранить default ветки безопасно, просто слить из умолчанию в новых-изменения:

    hg update new-changes # switch to the branch 
    hg merge -r default 
    

    Теперь вы можете проверить новый- изменения и устранение любых проблем. Это очень распространенный рабочий процесс. Изменения в default включены в длинные ветви, чтобы они не дрейфовали слишком далеко друг от друга. Когда вы в конце концов будете готовы объединить две линии разработки, объедините new-changes в строку по умолчанию, и все будет работать правильно.

  2. Если вы хотите сохранить обе ветви чистой поры до времени, вы можете создать новый филиал testing и объединить обе существующие филиалы в него. Вы можете сохранить его и соединить в default или закрыть его, если new-changes окажется неудачным экспериментом. (Detail: Если testing коренится во главе одной из ветвей, не будет «ничего слить» из этой ветви Вам нужно только объединить другой..)

Если вы не хотите рисковать испортить свое основное репо, вы можете, конечно, клонировать его и попробовать один из вышеупомянутых подходов к клону. Как только вы удовлетворены тем, что он работает правильно, отбросьте все обратно на основное репо.

+0

Я думаю, что 1-й вариант выглядит хорошо .. Я ошибся в слиянии новых изменений с дефолтом, и мой по умолчанию ввернут. Хорошо, что я еще не сделал этого ... Как мне вернуться к умолчанию филиал? Кроме того, что вы имеете в виду под номером ревизии? Я уверен, что это не changeets id ?, то как мне его получить? – user1050619

+0

Не знаете, о чем вы меня спрашиваете. Если вы начали сливаться, изменилось ваше мнение, и теперь вы сидите в беспорядке файлов, используйте 'hg update -clean .' (см.' Hg help merge'). Для остальных, я думаю, вы хотели спросить у другого ответа? В любом случае вы можете идентифицировать ревизию либо по id, либо по номеру. Взгляните на вывод 'hg log'. – alexis