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

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

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

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

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

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

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

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

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

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

Переменная в потоке, которой вы должны следовать, заключается в том, что мы не знаем, что такое восходящая ветвь вашей функциональной ветки. Восходящая ветвь — это то, что будет использоваться в качестве ветки для перебазирования, если вы запустите, скажем, git pull -r.... поэтому, чтобы избежать использования неправильного восходящего потока и предположения, что ваш локальный main btanch уже обновлен, вы можете запустить уже работают над вашей функциональной веткой).

eftshift0 01.08.2024 12:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 как обычно.


Другие вопросы по теме