Как легко переносить изменения в ветку функций из основной ветки

Мой бизнес-кейс: мы трое тестировщиков, работающих над общей базой кода, хранящейся в ветке Main.

На прошлой неделе я начал работу над новым тестом, создав функциональную ветку Main.

Однако прежде чем я успел создать PR, двое других тестировщиков внесли свои изменения и были объединены в ветку Main.

Теперь моя проблема в том, что моя ветка функций больше не синхронизирована с веткой Main. Как мне получить последние изменения в функции из Main?

Git fetch или Git pull не обновил мою ветку функций, а только обновил мою локальную основную ветку, но моя локальная ветка функций все еще не обновлена ​​с учетом последних изменений по сравнению с основной.

Как мне перебазировать мою локальную ветку функций на последнюю копию основной ветки в INTELLIJ IDE Ultimate.

Я путаюсь при выборе ПРИНИМАТЬ МОИ ИЗМЕНЕНИЯ или ПРИНЯТЬ ИХ ИЗМЕНЕНИЯ. Я при этом испортил свою ветку....

Как обновить ветку функций из последней копии master без потери локальных изменений.

Пожалуйста, направь меня


1
57
2

Ответы:

Решено

Пошаговые инструкции:

  1. Получите последние изменения из удаленного репозитория Откройте IntelliJ IDEA.

Перейдите к VCS > Git > Fetch, чтобы получить последние изменения из удаленного репозитория.

  1. Оформить заказ в вашей функциональной ветке В правом нижнем углу IntelliJ IDEA щелкните имя ветки, чтобы открыть всплывающее окно «Ветви».

Выберите свою ветвь функции и выберите «Оформить заказ».

  1. Перебазируйте свою ветку функций на последнюю основную ветку Перейдите к VCS > Git > Rebase. Выберите Перебазировать текущую ветку на.... В появившемся диалоговом окне выберите основную ветку (например, origin/main) в качестве целевой и нажмите «Перебазировать».

  2. Разрешение конфликтов (если есть конфликты)

Для каждого конфликта используйте средство просмотра различий, предоставляемое IntelliJ IDEA:

Принять ваши (Принять мои изменения): сохраняет ваши изменения и отбрасывает входящие изменения из основной ветки.

Принять их (Принять их изменение): сохраняет изменения из основной ветки и отменяет ваши изменения.

Объединить: позволяет вручную объединить изменения, отредактировав файл. После разрешения каждого конфликта отметьте файл как разрешенный, нажав кнопку «Отметить как разрешенный» в правом верхнем углу средства просмотра различий.

  1. Продолжить перебазирование:

После разрешения всех конфликтов продолжите процесс перебазирования. перейдите к VCS > Git > Rebase, затем выберите «Продолжить перебазирование».

  1. Нажмите перебазированную ветку функций:

После успешного перебазирования и разрешения конфликтов отправьте свою ветку функций в удаленный репозиторий. Переходите на VCS > Git > Push.

В диалоговом окне «Push» обязательно отправьте свою ветку функции. Используйте опцию --force-with-lease, чтобы не перезаписать изменения, которые могли быть внесены другими.


Рекомендуется использовать Расширение конфликта слияния запроса на включение для разрешения конфликтов слияния в запросе на включение:

  1. Установите расширение конфликта слияния запросов на включение в свою организацию/коллекцию Azure DevOps.

  2. После того как вы зафиксируете и отправите изменения в удаленную ветку feature в Azure DevOps, создайте PR (запрос на извлечение), чтобы объединить изменения из feature в main.

  3. Если определенные файлы были изменены с обеих сторон (feature и main), в Обзоре PR вы увидите сообщение об ошибке «merge conflicts» и список конфликтующих файлов. В этой ситуации невозможно завершить слияние PR.

  4. Перейдите на вкладку «Конфликты», чтобы вручную разрешить конфликты в каждом файле.

    • Если вы хотите сохранять обновления только из ветки feature, выберите опцию «Keep Whole Source (left) File».
    • Если вы хотите сохранять обновления только из ветки main, выберите опцию «Keep Whole Target (right) File».
    • Если вы хотите сохранить определенные обновления с обеих сторон, вы можете вручную настроить конфликтующее содержимое, а затем нажать «Submit Merge», чтобы отправить измененное содержимое.

  5. После разрешения конфликтов во всех файлах перейдите в раздел «Обзор», вы увидите, что ошибка «merge conflicts» исчезла и появилось сообщение «No merge conflicts». На этом этапе вы можете завершить слияние PR как обычно.