GitHub "не может автоматически сливаться"?
Иногда, когда я пытаюсь объединить головную вилку в свою базовую вилку или мою базовую вилку в вилку, я получаю следующее сообщение о GitHub:
"Невозможно автоматически слить. Не волнуйтесь, вы все равно можете создать запрос на растяжение".
Как просмотреть конфликты, если они есть?
Я прочитал около 10 различных примеров с различными командами, но я не могу сказать, что имена в примерах применимы в моей ситуации, поскольку существуют разные имена для баз, вилок, ветвей и т.д.
После всего этого, я не могу поверить, что нет команды, которую вы можете ввести, чтобы видеть конфликты, редактировать конфликты и продолжать слияние.
Если есть, я еще не нашел его.
Ответы
Ответ 1
Это означает, что ваш запрос на извлечение не может быть объединен с восходящим потоком без необходимости, чтобы владелец (и) верхнего уровня разрешал конфликты слияния.
Здесь вы можете сделать выборку из апстрима, а затем разрешить конфликты слияния из апстрима. На этом этапе, если вы теоретически разрешите конфликты из восходящего потока, а затем создадите свой запрос на извлечение, восходящий поток сможет автоматически объединить ваш запрос на извлечение без каких-либо конфликтов (при условии, что не было никаких коммитов в восходящем потоке между локальным разрешением восходящего потока). конфликты слияния и слияния с вашим local/fork, а затем создание запроса на удаление).
Давайте использовать GitHub в качестве примера здесь для удаленного хранилища репо.
OriginalAccount\repo1 - скажем, что это оригинальный репозиторий (мы будем называть это "апстрим")
YourAccount\repo1 - это будет ваш форк репозитория (обычно это удаленный источник)
repo1 local - это ваша локальная копия репозитория.
Когда вы создаете запрос на извлечение из YourAccount\repo1 в OriginalAccount\repo1 (практически из источника в восходящий поток), просмотр сообщения, которое вы не можете объединить автоматически, означает, что OriginalAccount\repo1 имеет фиксацию, которую не имеет YourAccount\repo1 (фиксирует, что Скорее всего были оттеснены после того, как вы разветкились).
Решение здесь заключается в том, чтобы извлечь данные из апстрима в ваш локальный репозиторий (из OriginalAccount\repo1 в ваш локальный репозиторий) и разрешить любые конфликты слияния локально. Затем отправьте свои коммиты на YourAccount\repo1. На этом этапе вы сможете создать свой запрос на извлечение, который можно будет автоматически объединить в OriginalAccount\repo1.
Примечание. Несмотря на то, что большинство служб Git не будут препятствовать тому, чтобы вы продолжили работу с запросом на получение, который требует, чтобы вышестоящие участники внесли свой вклад в разрешение конфликтов слияния, это хорошая практика и хороший этикет, чтобы гарантировать, что ваш запрос на слияние сливается без конфликта. Подумайте об этом следующим образом: вы должны выполнять работу по разрешению конфликтов слиянием, вместо того, чтобы делать это из ваших вкладчиков.
Ответ 2
Допустим, есть ваша ветка и ветка мастерская. Вы хотите объединить изменения из вашей ветки в мастер для того, чтобы другие могли их видеть, но кто-то другой тем временем внес конфликтующие изменения в мастер (например, объединение их PR). Часто бывает полезно объединить master с your-branch (т.е. выполнить слияние наоборот) перед созданием PR.
В командной строке вы можете:
git checkout master
git pull
git checkout your-branch
git merge master
Теперь вы можете увидеть список конфликтов. Следуйте сообщениям, которые вы получаете от git, чтобы разрешить конфликты. Вы можете использовать ваши любимые инструменты, так что это намного проще. Наконец, вы совершаете и подталкиваете. Когда вы воссоздаете PR, не должно быть никаких конфликтов.
Ответ 3
Самый простой способ сделать это - использовать Github следующим образом:
- В Github выберите вкладку ветки, нажмите кнопку просмотра слияния, перетащите
Направьте вилку в левую коробку, перетащите вашу базовую вилку в правую коробку.
- Нажмите кнопку Объединить ветки.
- Выбор изменяет вкладку.
- Выберите каждый файл, который имеет конфликты. см. "& lt; & lt; & lt; & lt; & lt; & lt;" Редактировать файлы в
внешний зритель, чтобы сохранить код headfork и добавить свой к нему.
- Нажмите Сохранить в файле (файлах).
- Нажмите Подтвердить для кнопки.
- Нажмите синхронизацию.
- Перейдите на сайт Git и попробуйте снова объединить вашу базовую вилку с головной вилкой.
Больше не должно отображаться оригинальное сообщение.
Ответ 4
У вас возникают конфликты, когда ваш код, который будет объединен в репо, будет конфликтовать с уже существующим кодом.
Если ваш запрос на перенос принят, для его решения будет отвечать менеджер репо.