如何解决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个回答

1

为了后人留存:就像AxeEffect所说...如果你没有拼写错误,请检查你的本地分支名称中是否有荒谬的字符,比如逗号或撇号。我现在正好遇到了这种情况。


1
我建议您检查是否能够切换到要合并的分支。尽管我想要合并的分支在本地存储库中且没有拼写错误,但我仍然遇到了这个错误。为了能够切换到该分支(也可以使用Stash或提交),我忽略了本地更改。之后,我切换回最初的分支,合并成功了。

1
在我的情况下,我试图从git仓库的子目录执行git命令。 请确保它是您使用git初始化的目录,而不是其子目录。

1
一样的情况。我的终端在一个多仓库项目中的兄弟目录中。 - Noumenon

1

如果你正在遵循旧的教程,而不是检查 master 分支,请检查分支是否命名为 main 或类似名称。

错误提示你的 branch-name 必须是你的其中一个分支的名称。


1
我的目标是将Branch2的代码合并到Branch1中。
在合并时,我收到了以下消息。
我的分支是Branch1和Branch2。请在您的项目文件夹中提供这些分支。
最初,我只有Branch1和maser。在这种情况下,我收到了如下所述的消息。

enter image description here

现在我已经切换到Branch2。

现在我的项目文件夹中有Branch1Branch2master

现在开始合并步骤:

  1. git checkout Branch1
  2. git merge Branch2

最终我们将Branch2Branch1合并。


1

您正在尝试合并的分支可能当前未被您的git识别,因此请执行以下操作: git branch 查看您想要合并的分支是否存在,如果不存在,则执行 git pull 现在执行 git branch,该分支将可见, 然后执行 git merge <BranchName>


1

我遇到了同样的问题。我使用下面的命令解决了它:

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

0

我有一个工作树,其中在两个不同的工作文件夹中检出了主分支和另一个分支。

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

0

这可能听起来有些奇怪,但请记得设置您的Git电子邮件和名称:

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

0

git rebase the-branch-to-be-merged

我使用了这个 git 命令解决了问题,但是 rebase 只适用于某些情况。


我会避免使用变基,因为在我看来,对于这种基本的分支合并错误,它似乎过于极端了。 - David B

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