How to resolve git's “not something we can merge” error

烈酒焚心 提交于 2019-12-17 17:24:21

问题


I just encountered a problem when merging a branch into master in git. First, I got the branch name by running git ls-remote. Let's call that branch "branch-name". I then ran git merge branch-name command and got the following result:

fatal: branch-name - not something we can merge

How do I resolve this error?


回答1:


As shown in How does "not something we can merge" arise?, this error can arise from a typo in the branch name because you are trying to pull a branch that doesn't exist.

If that is not the problem (as in my case), it is likely that you don't have a local copy of the branch that you want to merge. Git requires local knowledge of both branches in order to merge those branches. You can resolve this by checking out the branch to merge and then going back to the branch you want to merge into.

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

This should work, but if you receive an error saying

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

you need to fetch the remote (probably, but not necessarily, "origin") before checking out the branch:

git fetch remote-name



回答2:


It's a silly suggestion, but make sure there is no typo in the branch name!




回答3:


When pulling from a remote upstream, git fetch --all did the trick for me:

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]

In other cases, I found the "Not something we can merge" error will also happen if the remote (origin, upstream) branch does not exist. This might seem obvious, but you might find yourself doing git merge origin/develop on a repo that only has master.




回答4:


I had this issue as well. The branch looked like 'username/master' which seemed to confuse git as it looked like a remote address I defined. For me using this

git merge origin/username/master

worked perfectly fine.




回答5:


The below method works for me every time.

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:


It may happen because that branch is not on your local. before merging use

git fetch origin



回答7:


This error suggest that the branch from where you want to merge changes (i.e. in you case branch-name) is not present in you local, so you should checkout the branch and fetch the local changes. Checkout to your master branch and fetch, then follow the below steps:

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



回答8:


You are getting this error because the branch you want to merge doesn't exist on your local repository.

So, first checkout the brach you want to merge into master branch by the following command:

git checkout branch_name_to_merge

After this try to merge it with master branch by the following command:

git merge branch_name_to_merge



回答9:


This answer is not related to the above question, but I faced a similar issue, and maybe this will be useful to someone. I merged my feature branch to master as below:

$ git merge fix-load

I got the following error message:

merge: fix-load - not something we can merge

I looked into above all solutions, but not none worked.

I found the issue was a spelling mistake on my branch name (actually, the merge branch name is fix-loads).




回答10:


I got this error when I did a git merge BRANCH_NAME "some commit message" - I'd forgotten to add the -m flag for the commit message, so it thought that the branch name included the comment.




回答11:


If the string containing the reference is produced by another Git command (or any other shell command for that matter), make sure that it doesn't contain a return carriage at the end. You will have to strip it before passing the string to "git merge".

Note that it's pretty obvious when this happens, because the error message in on 2 lines:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge



回答12:


We got this error because we had a comma (,) in the branch name. We deleted the local branch, then re-checked it under a new name without the comma. We were able to merge it successfully.




回答13:


For posterity: Like AxeEffect said... if you have no typos check to see if you have ridiculous characters in your local branch name, like commas or apostrophes. Exactly that happened to me just now.




回答14:


I suggest checking if you are able to switch to the branch that you are trying to merge with.

I got this error even though the branch I wanted to merge with was in local repository and there were no spelling errors.

I ignored my local changes so that I could switch to the branch (Stash or commit can also be preferred). After this I switched back to the initial branch, and the merge was successful.




回答15:


In my opinion i had missed to map my local branch with remote repo. i did below and it worked fine.

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



回答16:


For me the problem occured when I tried this:

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

So actually I should have written master instead of develop,because master was the branch name of Subtree,not my actual branch.




回答17:


This may sounds weird, but remember to setup your git email and name:

git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"



回答18:


For me, the problem was the 'double quotation marks' into merge message. So when I removed the double mark, all magically worked. I hope to help someone. (Sorry for my poor English)



来源:https://stackoverflow.com/questions/16862933/how-to-resolve-gits-not-something-we-can-merge-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!