Answers:
如如何出现“我们无法合并的东西”所示?,此错误可能是由分支名称中的错字引起的,因为您正试图拉出不存在的分支。
如果这不是问题所在(如我的情况),则可能您没有要合并的分支的本地副本。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.
您需要在签出分支之前获取远程对象(可能但不一定是“源”):
git fetch remote-name
Git requires local knowledge of both branches in order to merge those branches
这是一个愚蠢的建议,但请确保分支名称中没有错字!
当从远程上游拉动时,git fetch --all
为我完成了the俩:
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]
在其他情况下,我发现如果远程(原始,上游)分支不存在,也会发生“无法合并的错误”错误。这看起来似乎很明显,但是您可能会发现自己在git merge origin/develop
仅具有的回购中执行操作master
。
git remote add upstream
是我所想不到的重要事情,它为我解决了这一问题。我认为常见的错误是假设叉子自动知道它是从哪里分叉的。
我也有这个问题。分支看起来像'username / master',它看起来像我定义的远程地址,似乎使git感到困惑。对我来说
git merge origin/username/master
工作得很好。
origin/
在远程分支的名称之前加上。
/
,则必须执行此操作。
您收到此错误消息是因为要合并的分支在本地存储库中不存在。
因此,首先通过以下命令检出要合并到master分支的分支:
git checkout branch_name_to_merge
之后,尝试通过以下命令将其与master分支合并:
git merge branch_name_to_merge
checkout
分支
此错误表明您要在其中合并更改的分支(即您的情况下,分支名称)在您的本地中不存在,因此您应该签出该分支并获取本地更改。检出到您的master分支并提取,然后执行以下步骤:
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-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命令(或与此相关的任何其他Shell命令)生成的,请确保它的末尾不包含回车符。在将字符串传递给“ git merge”之前,您将不得不剥离它。
请注意,发生这种情况非常明显,因为错误消息出现在两行中:
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
因为分支名称中有逗号(,),所以出现了此错误。我们删除了本地分支,然后以不带逗号的新名称重新检查了它。我们能够成功合并它。
对我来说,当我尝试这个问题时发生了:
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"
对我来说,问题是合并消息中的“双引号”。因此,当我删除双重标记时,所有方法都可以正常工作。我希望能帮助别人。(对不起,我英语不好)
我有一个带有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 fetch
在合并远程分支前第一。