如何解决Git的“not something we can merge”错误

469

我在使用 git 将一个分支合并到主分支时遇到了问题。首先,我通过运行命令 git ls-remote 获取了分支的名称。假设该分支名称为 "branch-name"。然后,我运行了命令 git merge branch-name,但得到以下结果:

fatal: branch-name - not something we can merge

我该如何解决这个错误?


对我有效的唯一方法是使用命令行自动完成。我输入了git并自动完成了merge和branch-name。即使复制粘贴分支名称也失败了,因此可能存在隐藏字符,这样就可以摆脱它们。我使用的是bash 4.4,不确定这是否适用于所有shell。自动完成git命令对我来说是一件新事情。 - Mote Zart
在我的情况下,他们决定将远程分支的名称从“master”改为“main”。他们试图关注BLM(黑人的命也是命)是很好的,但这让我感到非常困惑。 - undefined
33个回答

7
这个错误提示表明你想要合并的更改所在的分支(即在你的情况下的分支名称)不存在于你的本地,因此你应该切换到该分支并获取本地更改。 切换到你的主分支并获取,然后按照以下步骤操作:
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name

我会挑剔地说,我不认为错误信息暗示任何类似上述的内容 :-) - Brian Agnew

5

我建议首先检查所有分支或者你正在寻找的分支是否可用

git branch -r

从列表中查看

origin/HEAD -> origin/main
origin/feature/branch_1
origin/feature/branch_2
origin/feature/branch_3
origin/feature/branch_4
origin/feature/your branch

建议从源头开始复制清单,然后执行 git merge origin/feature/branch_2。复制粘贴将删除打字错误。

3

在我看来,我错过了将我的本地分支与远程仓库进行映射。我进行了以下操作,并且它运行良好。

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

3

当我执行 git merge BRANCH_NAME "some commit message" 时,出现了这个错误——我忘记添加 -m 标志来指定提交信息,所以它认为分支名称包含了注释。


2
如果包含引用的字符串是由另一个Git命令(或任何其他shell命令)生成的,请确保它在末尾不包含回车符。在将该字符串传递给“git merge”之前,您将需要删除它。
请注意,当发生这种情况时很明显,因为错误消息显示在2行上:
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

3
当你给一个回答投下反对票时,请提供一条评论。也许这并不是原帖作者的问题所在,但它可能是错误信息的一个可能原因(我自己曾经遇到过这个问题)。 - ocroquette

2

我们之所以出现这个错误,是因为分支名称中有逗号(,)。我们删除了本地分支,然后在没有逗号的新名称下重新检查它。我们成功地合并了它。


下划线似乎也有问题。+1 - Anders Lindén
1
我经常在分支名称中使用下划线 @AndersLindén - nzaleski
括号也有问题...+1 - Pablo Ezequiel Inchausti

2
为了避免打错字,你可以这样做:
git fetch --all -v

然后复制您的分支名称并执行。
git checkout <branch-name>
git checkout master
git merge <branch-name>

2

在我的情况下,问题在于分支名称。我的新分支名称包含括号,一旦我将其重命名并删除括号,问题就解决了。


2

我知道回答有点晚,但是我也遇到了同样的问题,所以我运行了以下命令:

git checkout master

然后

git pull origin branch-name

它解决了我的问题。


1

有很多原因可以导致这种情况发生:

git merge dependabot/npm_and_yarn/storybook/addon-essentials-6.4.19
merge: dependabot/npm_and_yarn/storybook/addon-essentials-6.4.19 - not something we can merge
  1. 你的分支名字含有特殊字符。(就像我的情况): 解决方案:从不能合并的分支检出一个易于命名的新分支,这可能会有所帮助。
git checkout -b feature-addon
git checkout dev
git merge feature-addon

  1. 这个错误可能是因为分支名称中有错别字,导致你试图拉取一个不存在的分支。

  2. 非常愚蠢,但很可能是你没有想要合并的分支的本地副本。尝试使用 git fetch 命令获取它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接