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


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

fatal: branch-name - not something we can merge

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

16 181

16 ответов:

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

Если это не проблема (как в моем случае), вполне вероятно, что у вас нет локальной копии ветви, которую вы хотите объединить. 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.

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

git fetch remote-name

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

при вытягивании из удаленного вверх по течению,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]

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

У меня тоже была эта проблема. Ветка выглядела как "имя пользователя / мастер", что, казалось, смущало git, поскольку это было похоже на удаленный адрес, который я определил. Для меня с помощью этого

git merge origin/username/master

прекрасно работало нормально.

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

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

git checkout branch_name_to_merge

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

git merge branch_name_to_merge

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

git fetch origin

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

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

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

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

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

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

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

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

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

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

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

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

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

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

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

$ git merge fix-load
merge: fix-load - not something we can merge

для этого я смотрю на все решения, но не работаю ни с кем,

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

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

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

пробовал

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

вместо

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