Подтвердить что ты не робот

"Этот запрос на растяжение содержит конфликты слияния, которые должны быть разрешены".

Я получаю эту ошибку с PR, но когда я git status, она говорит nothing to commit, working directory clean.

Это на ветке с PR.

On branch pr12
nothing to commit, working directory clean
4b9b3361

Ответ 1

git status расскажет о состоянии вашего дерева рабочего дерева и вашего индекса (где живут поэтапные изменения) относительно последнего фиксации текущей ветки. Результат, который вы видите, означает, что файлы на вашем диске точно соответствуют последней фиксации в вашей ветке. То есть "ничего не совершать".

Сообщение от GitHub не об фиксации, а о слиянии. GitHub хотел бы предложить вам один клик, чтобы объединить эту ветвь в ветку master, но она не может, потому что это слияние приводит к конфликтам. Поскольку у GitHub нет способа помочь вам разрешить конфликты на веб-сайте, он просит вас разрешить их на вашей собственной машине.

Лучший способ справиться с этой ситуацией - объединить текущую ведущую ветвь в ветку темы локально, а затем нажать результат в GitHub. Для этого сделайте следующее:

$ git checkout pr12  # If you're not already on pr12
$ git fetch origin
$ git merge origin/master

(Я предполагаю, что удаленный GitHub называется origin. Обычно это, и вы, вероятно, знаете, если это не так.)

Сначала мы убеждаемся, что мы на правильной ветке. Затем мы удостоверяемся, что у нас есть последний код из ветки master в репозитории GitHub. Затем мы объединяем этот код в нашу ветвь pr12.

Помните: git fetch origin обновляет наш локальный origin/master таким же, как GitHub master, но он не касается локальной ветки, называемой просто master. Нам нужно будет проверить наш ветвь master, чтобы внести в нее изменения. Вместо этого мы просто обновляем нашу идею о том, что на GitHub (origin/master) и объединяем это в наш pr12.

Когда вы запустите команду merge, вы увидите конфликты. Те, кто принимает решения, которые git (и GitHub) не могли сделать автоматически. Отредактируйте эти файлы, чтобы они были такими, как вы хотите, чтобы они закончились. Тогда:

$ git add each/file.txt that/had/conflicts.conf
$ git commit   # Your editor will open with a pre-filled
               # commit message. Just save and close the file.
$ git push origin pr12

То есть мы добавляем версии исправленных файлов, а затем завершаем слияние слиянием, которое мы начали с git merge. Наконец, мы нажимаем ветку с новым объединением до GitHub.

Поскольку мы разрешили конфликты, эта ветка должна быть тривиальной, чтобы слить другой путь, в master. GitHub заметит это и даст вам зеленую кнопку "Слияние".

Ответ 2

Когда я столкнулся с этим сообщением, это было из-за того, что моя оригинальная репо была за оригиналом. В моем конкретном случае репо я разветкил pydata/pandas.

Мне пришлось настроить удаленный ящик для своей вилки, выполнив:

> git remote add upstream [email protected]:original_user/original_repo.git
> git remote -v
origin  [email protected]:some_user/pandas.git (fetch)
origin  [email protected]:some_user/pandas.git (push)
upstream    [email protected]:pydata/pandas.git (fetch)
upstream    [email protected]:pydata/pandas.git (push)

(Примечание: git remote add upstream - это способ git: "Добавить удаленный вызов" вверх по течению ". Имя может быть любым.)

Затем я извлек последние коммиты из исходного репо с помощью:

> git fetch upstream
> git checkout master # Just in case you're not already on master
> git merge upstream/master

и, наконец, нажмите объединенное репо на github:

> git push