Git. Как обновить ветку функций, не объединяя ненужные коммиты?

#git-merge #pull-request #git-merge-conflict

#git-merge #запрос на извлечение #git-merge-конфликт

Вопрос:

Я немного смущен этими сценариями:

  1. У меня есть задача.
    Я создаю ветку функций, выполняю работу здесь.
    А затем я создаю запрос на извлечение в ветку release-test.
    Чтобы избежать конфликтов, сначала я должен обновить свою ветку функций. Итак, я должен объединить release-test в feature.
    Но в этом случае в моем запросе на извлечение у меня будет много объединенных коммитов, которые я не хочу иметь. Я хочу, чтобы в PR были только мои коммиты ветки функций.
    Что мне делать в этой ситуации?
  2. Я нажал на свою ветку функций, а затем в PR появляется конфликт. Каковы мои следующие шаги?
    Я попытался вернуться к последнему коммиту, сравнил с веткой release-test, затем принудительно нажал. Это хорошая практика?

PS Я использую Intellij Idea, если это поможет

Ответ №1:

Чтобы избежать конфликтов, сначала я должен обновить свою ветку функций. Итак, я должен объединить release-test в feature.

Не делайте этого: вы всегда должны объединяться с определенных ветвей интеграции, а не наоборот.

  • Ваша feature ветка — это конкретная ветка (специфичная для данной задачи, которую вы изолируете в своей собственной ветке)
  • release-test является ли ветвь интеграции (где несколько ветвей объединяются)

Если вам нужно обновить свою feature ветку по сравнению с release-test , перебазируйте ее:

  cd /path/to/local/repo
 git switch feature
 git fetch
 git rebase origin/release-test
 # resolve potential conflict there
 git push --force
 

Это гарантирует, что в вашем PR не будет конфликта (автоматически обновляется после push --force ), поскольку ваша feature ветка будет добавлять новые коммиты только поверх самой последней удаленной release-test ветки.