如何解决混帐的“不是我们可以合并”的错误
在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的分支名称,而不是我的实际分支。