如何解决混帐的“不是我们可以合并”的错误

在git中将分支合并到master时,我遇到了一个问题。 首先,我通过运行git ls-remote获得分支名称。 我们称之为分支“分支名称”。 然后我运行git merge branch-name命令,得到如下结果:

 fatal: branch-name - not something we can merge 

我该如何解决这个错误?

如何“不能合并”出现? ,这个错误可能是由于分支名称中的拼写错误导致的,因为您试图拉取一个不存在的分支。

如果这不是问题(就像我的情况那样),那么很可能您没有要合并的分支的本地副本。 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 

这是一个愚蠢的build议,但要确保分支名称中没有错字!

从远程上游拉, 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] 

在其他情况下,如果远程(原始,上游)分支不存在,我发现“不能合并”错误也会发生。 这可能看起来很明显,但是你可能会发现自己在一个只有master的repo上做了git merge origin/develop

我也有这个问题。 该分支看起来像“用户名/主”这似乎混淆混帐,因为它看起来像我定义的远程地址。 对我来说这个

 git merge origin/username/master 

工作得很好。

当我做了一个git merge BRANCH_NAME "some commit message"时,我得到了这个错误 – 我忘记了为提交信息添加-m标志,所以它认为分支名称包含注释。

您正在收到此错误,因为您要合并的分支在本地存储库上不存在。

因此,首先通过以下命令检出要合并到主分支中的布尔:

 git checkout branch_name_to_merge 

在这之后尝试通过以下命令将其与主分支合并:

 git merge branch_name_to_merge 

如果包含引用的string是由另一个Git命令(或任何其他shell命令)生成的,请确保它最后不包含回车。 在将string传递给“git merge”之前,您必须将其去掉。

请注意,发生这种情况时非常明显,因为两行中的错误消息:

 merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9 - not something we can merge 

对于后人:就像AxeEffect说的…如果你没有错别字检查,看看你的地方分支名称中有荒谬的字符,如逗号或撇号。 刚才那个发生在我身上。

我build议检查是否可以切换到您正在尝试合并的分支。

我得到了这个错误,即使我想合并的分支是在本地存储库,并没有拼写错误。

我忽略了我的本地更改,以便我可以切换到分支(存储或提交也可以是首选)。 之后,我切换回到最初的分支,合并成功。

我们得到这个错误,因为我们在分支名称中有一个逗号(,)。 我们删除了本地分支,然后用一个没有逗号的新名称重新检查它。 我们能够成功地合并它。

我试着git合并“提交消息”,而不是git merge -m“提交消息”。

对我来说,当我尝试这个时发生了问题:

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

所以实际上我应该写出master而不是develop ,因为主是Subtree的分支名称,而不是我的实际分支。