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

fatal: branch-name - not something we can merge

如何解决此错误?


当前回答

为了避免错别字你可以做

git fetch --all -v

然后复制您的分支机构的名称并执行

git checkout <branch-name>
git checkout master
git merge <branch-name>

其他回答

我今天有这个问题,当我将另一个分支合并到我的直接从主后,我必须先签出并拉出我合并的分支,然后我才能成功地将这个分支合并到我的分支中。

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

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

在我看来,我错过了映射我的本地分支与远程回购。我做了下面的工作,它工作得很好。

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

正如在“我们不能合并的东西”是如何产生的?,此错误可能由分支名称中的拼写错误引起,因为您正在尝试拉取一个不存在的分支。

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

我有一个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