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

时间:2013-05-31 17:41:29

标签: git branching-and-merging

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

fatal: branch-name - not something we can merge

如何解决此错误?

27 个答案:

答案 0 :(得分:275)

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

答案 1 :(得分:79)

这是一个愚蠢的建议,但请确保分支名称中没有拼写错误!

答案 2 :(得分:20)

我也有这个问题。该分支看起来像'username / master',它似乎混淆了git,因为它看起来像我定义的远程地址。对我来说这个

git merge origin/username/master

工作得非常好。

答案 3 :(得分:12)

以下方法每次都对我有用。

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

答案 4 :(得分:9)

可能是因为该分支不在您的本地。在合并使用之前

git fetch origin

答案 5 :(得分:7)

此错误表明,您要在其中合并更改的分支(即您的分支名称)在您的本地中不存在,因此您应该签出该分支并获取本地更改。 检出到您的master分支并提取,然后按照以下步骤操作:

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

答案 6 :(得分:6)

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

因此,首先通过以下命令检查要合并到master分支的brach:

git checkout branch_name_to_merge

此后尝试通过以下命令将其与master分支合并:

git merge branch_name_to_merge

答案 7 :(得分:5)

如果您未使用origin关键字并且分支不是您自己的分支之一,那么您也可能会遇到此错误。

git checkout <to-branch> 
git merge origin/<from-branch>

答案 8 :(得分:4)

此答案与上述问题无关,但我遇到了类似的问题,也许对某人有用。我将功能分支合并为master,如下所示:

$ git merge fix-load

我收到以下错误消息:

  

合并:修复程序加载-我们无法合并

我首先查看了所有解决方案,但没有一个奏效。

我发现问题是我的分支机构名称上的拼写错误(实际上,合并分支机构名称为fix-loads)。

答案 9 :(得分:3)

当我执行git merge BRANCH_NAME "some commit message"时出现此错误 - 我忘记为提交消息添加-m标志,因此它认为分支名称包含注释。

答案 10 :(得分:2)

如果包含引用的字符串是由另一个Git命令(或任何其他shell命令)生成的,请确保它在末尾不包含返回的托架。在将字符串传递给&#34; git merge&#34;。

之前,您必须将其删除

请注意,发生这种情况时非常明显,因为错误信息位于2行:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

答案 11 :(得分:2)

我们收到此错误,因为我们在分支名称中有逗号(,)。我们删除了本地分支,然后在没有逗号的情况下以新名称重新检查它。我们能够成功合并。

答案 12 :(得分:2)

我今天在直接从master拉取后合并另一个分支到我的分支时遇到了这个问题,我必须先checkout并拉出我正在合并的分支,然后我才能成功地将这个分支合并到我的分支中。

git checkout branch-to-merge
git pull
git checkout my-branch-name
git merge branch-to-merge

答案 13 :(得分:1)

对于后代:就像AxeEffect说的那样......如果你没有错别字检查,看看你的本地分支名称中是否有荒谬的字符,比如逗号或撇号。恰好这件事发生在我身上。

答案 14 :(得分:1)

就我而言,我试图从 git 存储库的子目录中执行 git 命令。 请确保它是您使用 git 初始化的目录,而不是它的子目录。

答案 15 :(得分:1)

就我而言,问题出在分支机构名称中。我的新分支名称包含方括号,将其重命名并删除方括号后,便进行了排序。

答案 16 :(得分:1)

您正在尝试合并的分支目前可能尚未被您的git标识 所以执行 git branch 并查看您要合并的分支是否不存在,如果不存在,请执行 git pull 现在,如果您执行git branch,该分支现在将可见, 现在您执行git merge <BranchName>

答案 17 :(得分:1)

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

即使我要合并的分支在本地存储库中并且没有拼写错误,我也收到此错误。

我忽略了我的本地更改,以便我可以切换到分支(Stash或commit也可以是首选)。在此之后,我切换回初始分支,并且合并成功。

答案 18 :(得分:0)

我有一个带有master的工作树,另一个分支在两个不同的工作文件夹中签出。

PS C:\rhipheusADO\Build> git worktree list
C:/rhipheusADO/Build         7d32e6e [vyas-cr-core]
C:/rhipheusADO/Build-master  91d418c [master]

PS C:\rhipheusADO\Build> cd ..\Build-master\

PS C:\rhipheusADO\Build-master> git merge 7d32e6e #Or any other intermediary commits
Updating 91d418c..7d32e6e
Fast-forward
 Pipeline/CR-MultiPool/azure-pipelines-auc.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

PS C:\rhipheusADO\Build-master> git ls-remote
From https://myorg.visualstudio.com/HelloWorldApp/_git/Build
53060bac18f9d4e7c619e5170c436e6049b63f25        HEAD
7d32e6ec76d5a5271caebc2555d5a3a84b703954        refs/heads/vyas-cr-core 

PS C:\rhipheusADO\Build-master> git merge 7d32e6ec76d5a5271caebc2555d5a3a84b703954
Already up-to-date

PS C:\rhipheusADO\Build>  git push
Total 0 (delta 0), reused 0 (delta 0)
To https://myorg.visualstudio.com/HelloWorldApp/_git/Build
   91d418c..7d32e6e  master -> master

如果您只需要合并最新的提交:

git merge origin/vyas-cr-core 
git push

与我一直做的一样:

git checkout master # This is needed if you're not using worktrees
git pull origin vyas-cr-core
git push

答案 19 :(得分:0)

对我来说,问题在于合并消息中的“双引号”。因此,当我删除双重标记时,所有方法都可以正常工作。我希望能帮助别人。 (对不起,我英语不好)

答案 20 :(得分:0)

我认为我错过了使用远程仓库映射我的本地分支机构的信息。我在下面做了,工作正常。

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

答案 21 :(得分:0)

这听起来很奇怪,但请记住设置您的git电子邮件和名称:

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

答案 22 :(得分:0)

我遇到了同样的问题...我是一个完整的初学者 就我而言,它是由于我试图做而引起的:{{1} 当我退出file.txt并只允许分支名称(lol)kkfdskfskdfs

时,我的问题就解决了

git merge random_branch/file.txt运行得很好

答案 23 :(得分:0)

git rebase the-branch-to-be-merged

我使用此git命令解决了问题,但是rebase 仅在某些情况下适用

答案 24 :(得分:0)

我有同样的问题。我使用以下命令对其进行了修复:

git checkout main
git fetch
git checkout branch_name
git fetch
git checkout main
git fetch
git merge branch_name

答案 25 :(得分:0)

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

git checkout master

然后

git pull origin branch-name

解决了我的问题

答案 26 :(得分:0)

对我来说,当我尝试这个时出现问题:

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

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