如何解决git的“不是我们可以合并的”错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决git的“不是我们可以合并的”错误相关的知识,希望对你有一定的参考价值。
我刚刚在git中将分支合并到master时遇到了问题。首先,我通过运行git ls-remote
获得了分支名称。我们将该分支称为“分支名称”。然后我运行git merge branch-name
命令并得到以下结果:
fatal: branch-name - not something we can merge
我该如何解决这个错误?
如How does "not something we can merge" arise?所示,此错误可能源于分支名称中的拼写错误,因为您尝试拉出不存在的分支。
如果这不是问题(如我的情况),很可能您没有要合并的分支的本地副本。 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.
在签出分支之前你需要获取遥控器(可能,但不一定是“origin”):
git fetch remote-name
当我执行git merge BRANCH_NAME "some commit message"
时出现此错误 - 我忘记为提交消息添加-m标志,因此它认为分支名称包含注释。
如果包含引用的字符串是由另一个Git命令(或任何其他shell命令)生成的,请确保它在末尾不包含返回的托架。在将字符串传递给“git merge”之前,您必须将其删除。
请注意,发生这种情况时非常明显,因为错误消息在2行中:
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
我们收到此错误,因为我们在分支名称中有一个逗号(,)。我们删除了本地分支,然后在没有逗号的情况下以新名称重新检查它。我们能够成功合并。
后代:就像AxeEffect说的那样......如果你没有错别字检查,看看你的本地分支名称中是否有荒谬的字符,比如逗号或撇号。恰恰就是刚才发生在我身上的事。
我建议您检查是否能够切换到您尝试合并的分支。
即使我想要合并的分支在本地存储库中并且没有拼写错误,我也收到此错误。
我忽略了我的本地更改,以便我可以切换到分支(Stash或commit也可以是首选)。在此之后,我切换回初始分支,并且合并成功。
对我来说,当我尝试这个问题时出现了问题:
git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop
所以实际上我应该写master
而不是develop
,因为master是Subtree的分支名称,而不是我的实际分支。
这可能听起来很奇怪,但请记住设置您的git电子邮件和名称:
git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"
在我看来,我错过了使用远程仓库映射我的本地分支。我在下面做了,它工作得很好。
git checkout master
git remote add origin https://github.com/yourrepo/project.git
git push -u origin master
git pull
git merge myBranch1FromMain
对我来说,问题是合并消息中的'双引号'。因此,当我删除双标记时,所有神奇的工作。我希望能帮助别人。 (抱歉我的英语不好)
这是一个愚蠢的建议,但请确保分支名称中没有拼写错误!
当从一个偏远的上游拉,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]
在其他情况下,我发现如果远程(origin,upstream)分支不存在,也会发生“我们无法合并”的错误。这似乎是显而易见的,但你可能会发现自己在只有git merge origin/develop
的回购上做master
。
我也有这个问题。该分支看起来像'username / master',它似乎混淆了git,因为它看起来像我定义的远程地址。对我来说这个
git merge origin/username/master
工作得很好。
以下方法每次都适合我。
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
可能是因为该分支不在您的本地。在合并使用之前
git fetch origin
此错误表明您要合并的分支更改(即在您的情况下为branch-name)在本地不存在,因此您应该检出分支并获取本地更改。结帐到您的主分支并获取,然后按照以下步骤操作:
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
您收到此错误,因为您要合并的分支在本地存储库中不存在。
因此,首先通过以下命令检查要合并到master分支的brach:
git checkout branch_name_to_merge
在此之后尝试通过以下命令将其与master分支合并:
git merge branch_name_to_merge
这个答案与上述问题无关,但我遇到了类似的问题,也许这对某人有用。我将我的功能分支合并为master,如下所示:
$ git merge fix-load
我收到以下错误消息:
merge:fix-load - 不是我们可以合并的东西
我查看了所有解决方案,但没有一个解决方案。
我发现问题是我的分支名称拼写错误(实际上,合并分支名称是fix-loads
)。
以上是关于如何解决git的“不是我们可以合并的”错误的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程
git项目初次push提示error: failed to push some refs to https://gitee.com/xxxx/gittest.git’解决方案 --九五小庞(代码片段