Как решить ошибку git "не то, что мы можем объединить"
Я только что столкнулся с проблемой при слиянии ветки в master в git. Во-первых, я получил имя ветви, запустив git ls-remote
. Давайте назовем эту ветвь "именем ветви". Я тогда побежал и получил следующий результат:
fatal: branch-name - not something we can merge
как устранить эту ошибку?
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).