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

fatal: branch-name - not something we can merge

如何解决此错误?


当前回答

如果包含引用的字符串是由另一个Git命令(或任何其他shell命令)生成的,请确保它的末尾不包含返回回车。你必须在将字符串传递给“git merge”之前剥离它。

注意,当这种情况发生时,这是非常明显的,因为错误消息在2行中:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

其他回答

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

这个答案与上面的问题无关,但我遇到过类似的问题,也许这对别人有用。我试图合并我的特征分支,如下所示:

$ git merge fix-load

为此得到了以下错误消息:

合并:固定加载-不是我们可以合并

我研究了所有的解决方案,但并不是所有的都有效。

最后,我意识到问题的原因是我的分支名称的拼写错误(实际上,合并分支名称是fix-loads)。

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

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

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

对我来说,当我尝试这样做时,问题出现了:

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

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