Как разрешить ошибку git "не что-то, что мы можем объединить"

Я столкнулся с проблемой при объединении ветки в master в git. Во-первых, я получил название ветки, запустив git ls-remote. Позвольте называть эту ветку "имя-ветвь". Затем я запустил команду git merge branch-name и получил следующий результат:

fatal: branch-name - not something we can merge

Как устранить эту ошибку?

Ответ 1

Как показано в Как "не то, что мы можем объединить" ? возникает?, эта ошибка может возникнуть из-за опечатки в имени ветки, потому что вы пытаетесь вытащить ветвь, которая не существует.

Если это не проблема (как в моем случае), вполне вероятно, что у вас нет локальной копии ветки, которую вы хотите объединить. Git требует локального знания обеих ветвей, чтобы объединить эти ветки. Вы можете решить эту проблему, проверив ветвь, чтобы объединиться, а затем вернуться к ветке, в которую вы хотите объединиться.

git checkout branch-name
git checkout master
git merge branch-name

Это должно работать, но если вы получили сообщение об ошибке

error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.

вам нужно извлечь удаленный (возможно, но не обязательно "источник" ), прежде чем проверять ветвь:

git fetch remote-name

Ответ 2

Это глупое предложение, но убедитесь, что в названии ветки нет опечатки!

Ответ 3

Когда вы тянули с удаленного выхода, git fetch --all помогло:

git remote add upstream [url to the original repo]
git checkout [branch to be updated]
git fetch --all
git merge upstream/[branch to be updated]

В других случаях я обнаружил, что ошибка "Не то, что мы можем объединить" также произойдет, если ветвь remote (origin, upstream) не существует. Это может показаться очевидным, но вы можете найти себе git merge origin/develop в репо, который имеет только master.

Ответ 4

У меня тоже была эта проблема. Филиал выглядел как "username/master", который, казалось, путал git, поскольку он выглядел как удаленный адрес, который я определил. Для меня это

git merge origin/username/master

работал отлично.

Ответ 5

Метод ниже работает для меня каждый раз.

git checkout master
git pull
git checkout branch-name-to-be-merged
git pull
git checkout branch-name
git pull
git merge branch-name-to-be-merged

Ответ 6

Это может произойти, потому что эта ветвь не на вашем местном. перед слиянием использования

git fetch origin

Ответ 7

Эта ошибка говорит о том, что ветка, из которой вы хотите объединить изменения (т.е. В вашем случае имя-ветки), отсутствует в вашей локальной сети, поэтому вам следует извлечь ветку и получить локальные изменения. Выйдите в свою основную ветку и получите, затем выполните следующие шаги:

git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name

Ответ 8

Вы получаете эту ошибку, потому что ветка, которую вы хотите объединить, не существует в вашем локальном репозитории.

Итак, сначала проверьте браш, который вы хотите объединить в главную ветвь, следующей командой:

git checkout branch_name_to_merge

После этого попытайтесь объединить его с ветвью мастера с помощью следующей команды:

git merge branch_name_to_merge

Ответ 9

Этот ответ не связан с вышеупомянутым вопросом, но я столкнулся с подобной проблемой, и, возможно, это будет кому-то полезно. Я объединил свою ветвь функций с мастером, как показано ниже:

$ git merge fix-load

Я получил следующее сообщение об ошибке:

объединить: исправить-загрузить - не то, что мы можем объединить

Я смотрел на все решения, но не все работали.

Я обнаружил, что проблема была орфографической ошибкой в имени моей ветки (на самом деле, имя ветки слияния - fix-loads).

Ответ 10

Я получил эту ошибку, когда я сделал git merge BRANCH_NAME "some commit message" - я забыл добавить флаг -m для сообщения фиксации, поэтому он подумал, что имя ветки включает комментарий.

Ответ 11

Если строка, содержащая ссылку, создается другой командой Git (или любой другой командой оболочки, если на то пошло), убедитесь, что она не содержит возвратную карету в конце. Вам нужно будет удалить его перед передачей строки в "git merge".

Обратите внимание, что это довольно очевидно, когда это происходит, потому что сообщение об ошибке включено в 2 строки:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

Ответ 12

Мы получили эту ошибку, потому что у нас была запятая (,) в имени ветки. Мы удалили локальную ветвь, а затем повторно проверили ее под новым именем без запятой. Мы смогли успешно слить его.

Ответ 13

Для потомков: Как AxeEffect сказал... если у вас нет проверки опечаток, чтобы увидеть, есть ли у вас смешные символы в имени вашего локального ветки, например, запятые или апострофы. Именно это случилось со мной только сейчас.

Ответ 14

Я предлагаю проверить, можете ли вы переключиться на ветку, с которой вы пытаетесь слиться.

Я получил эту ошибку, хотя ветвь, с которой я хотел объединиться, была в локальном репозитории и не было орфографических ошибок.

Я проигнорировал свои локальные изменения, чтобы переключиться на ветку (также может быть предпочтительным Stash или commit). После этого я вернулся к исходной ветке, и слияние было успешным.

Ответ 15

Для меня проблема возникла, когда я попробовал это:

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop

Так что на самом деле я должен был написать master вместо develop, потому что master был именем ветки Subtree, а не моей фактической ветвью.

Ответ 16

Это может звучать странно, но не забудьте настроить адрес электронной почты и имя git:

git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"

Ответ 17

По моему мнению, я пропустил сопоставление моего локального ветки с удаленным репо. Я сделал ниже, и это работало нормально.

git checkout master
git remote add origin https://github.com/yourrepo/project.git
git push -u origin master
git pull
git merge myBranch1FromMain

Ответ 18

Для меня проблема заключалась в "двойных кавычках" в сообщении слияния. Поэтому, когда я убрал двойную отметку, все волшебным образом сработало. Я надеюсь помочь кому-то. (Извините за мой плохой английский)

Ответ 19

Я старался

git merge <branch-name> "Commit-message"

вместо

git merge <branch-name> -m "Commit-message"