GitHub не может перебазировать мою ветку функций: «Эта ветка не может быть перебазирована из-за конфликтов» - PullRequest
0 голосов
/ 25 апреля 2018

Даже когда моя ветвь функций была разветвлена ​​с последней версии master, когда я пытаюсь перебазировать свой PR (из функции X в мастерскую), я вижу:

Эта ветка не может быть перебазирована из-за конфликтов Перебазирование коммитов этой ветки поверх базовой ветки не может выполняться автоматически из-за конфликтов, возникающих при повторном применении отдельных коммитов из головной ветки.

Я понимаю, что это можно решить с помощью:

git checkout master
git rebase feature/x
(resolve conflicts)

Однако прямое нажатие на master заблокировано, и мне нужно пройти PR. Каковы шаги, чтобы успешно иметь возможность перебазировать ветку feature/x в master через запрос на извлечение?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Шаги, чтобы сделать ребаз:

x @ xyz-pc: ~ / workspace $ git branch

  • xyzBranch

    Мастер

x @ xyz-pc: ~ / workspace $ git master checkout

Переключен на ветку 'master'

Ваша ветка обновлена ​​с помощью 'origin / master'.

x @ xyz-pc: ~ / workspace $ git branch

  • мастер

    xyzBranch

x @ xyz-pc: ~ / workspace $ git pull

Обновление ...... Перемотка вперед ...

x @ xyz-pc: ~ / workspace $ git pull

Уже в курсе.

x @ xyz-pc: ~ / workspace $ git checkout xyzBranch

Переключено на ветку 'xyzBranch'

x @ xyz-pc: ~ / workspace $ git branch

  • xyzBranch

    мастер

x @ xyz-pc: ~ / workspace $ git rebase master

Во-первых, перематывая голову, чтобы воспроизвести вашу работу поверх нее ...

Быстрая пересылка xyzBranch to master.

Сценарий конфликта:

x @ xyz-pc: ~ / workspace $ git rebase master

  • Если конфликта нет, то повторная проверка прошла успешно, и на экране появится обновленное сообщение.

  • Если вы видите ошибку, вам нужно разрешить конфликты, поэтому «git status» отобразит конфликтующий файл, как показано ниже:

x @ xyz-pc: ~ / workspace $ git status

выполняется перебазировка; ..... Неизведанные пути:

    both modified:   conflicting-file

Он покажет вам файл конфликта по незатронутым путям.

Разрешите этот файл, зафиксируйте и выполните 'git rebase --continue'

0 голосов
/ 25 апреля 2018

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

Я понимаю, что это можно решить с помощью:

git checkout master
git rebase feature/x
(resolve conflicts)

Это не правильно. Это перебазировало master на feature/x; вам нужно перебазировать feature/x на master.

Вместо

  1. обновите свой локальный master из GitHub перед ребазингом, pull его или аналогичным,
  2. чек feature/x,
  3. пробег git rebase master и
  4. разрешать конфликты.

Затем перенесите ветку вашей функции на GitHub (вам нужно будет использовать --force-with-lease, так как это переписывает хеши коммитов). Запрос на извлечение будет обновлен соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...