Как разрешить ошибку 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"