我刚刚在git中将分支合并到master时遇到了一个问题。首先,我通过运行获得了分支名称git ls-remote
。我们称该分支为“分支名称”。然后我运行git merge branch-name
命令并得到以下结果:
fatal: branch-name - not something we can merge
如何解决此错误?
我刚刚在git中将分支合并到master时遇到了一个问题。首先,我通过运行获得了分支名称git ls-remote
。我们称该分支为“分支名称”。然后我运行git merge branch-name
命令并得到以下结果:
fatal: branch-name - not something we can merge
如何解决此错误?
如“我们不能合并的东西”是如何出现的?,此错误可能是由于分支名称中的拼写错误引起的,因为您试图拉出一个不存在的分支。
如果这不是问题(如我的情况),很可能您没有要合并的分支的本地副本。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 fetch --all
为我做了诀窍:
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 感到困惑,因为它看起来像我定义的远程地址。对我来说使用这个
git merge origin/username/master
工作得很好。
以下方法每次都适用于我。
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
这可能是因为该分支不在您的本地。合并使用前
git fetch origin
这个答案与上述问题无关,但我遇到了类似的问题,也许这对某人有用。我正在尝试将我的功能分支合并到 master,如下所示:
$ git merge fix-load
为此收到以下错误消息:
合并:修复加载 - 不是我们可以合并的东西
我研究了所有解决方案,但并非没有任何解决方案。
最后,我意识到问题原因是我的分支名称拼写错误(实际上,合并分支名称是fix-loads
)。
如果您不使用origin
关键字并且分支不是您自己的分支,您也可能会遇到此错误。
git checkout <to-branch>
git merge origin/<from-branch>
此错误表明您要合并更改的分支(即在您的情况下为分支名称)在您的本地不存在,因此您应该签出分支并获取本地更改。结帐到您的主分支并获取,然后按照以下步骤操作:
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
您收到此错误是因为您要合并的分支在您的本地存储库中不存在。
因此,首先通过以下命令检查要合并到 master 分支的分支:
git checkout branch_name_to_merge
在此之后尝试通过以下命令将其与 master 分支合并:
git merge branch_name_to_merge
我今天在直接从master中提取后将另一个分支合并到我的分支时遇到了这个问题,我必须先签出并拉出我正在合并的分支,然后我才能成功地将这个分支合并到我的分支中。
git checkout branch-to-merge
git pull
git checkout my-branch-name
git merge branch-to-merge
我在执行时遇到了这个错误git merge BRANCH_NAME "some commit message"
- 我忘记为提交消息添加 -m 标志,所以它认为分支名称包含评论。
在我看来,我错过了用远程仓库映射我的本地分支。我在下面做了,效果很好。
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”之前,您必须将其剥离。
请注意,发生这种情况时非常明显,因为错误消息在 2 行:
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
我们收到此错误是因为我们在分支名称中有一个逗号 (,)。我们删除了本地分支,然后以不带逗号的新名称重新检查它。我们能够成功地合并它。
我知道现在回答很晚,但我也遇到了同样的问题,所以我运行了以下命令
git checkout master
接着
git pull origin branch-name
它解决了我的问题
就我而言,问题出在分支名称中。我的新分支名称包含括号,一旦我重命名它并删除括号,它就会排序。
对于后代:就像 AxeEffect 所说的那样......如果您没有拼写错误,请检查您的本地分支名称中是否有荒谬的字符,例如逗号或撇号。正是刚才发生在我身上的事。
您尝试合并的分支目前可能无法被您的 git 识别,因此请执行
git branch
并查看您要合并的分支是否存在,如果不存在则执行
git pull
,如果您这样做git branch
,则该分支现在可见,现在你表演git merge <BranchName>
我有同样的问题。我使用以下命令修复了它:
git checkout main
git fetch
git checkout branch_name
git fetch
git checkout main
git fetch
git merge branch_name
我必须建议检查所有分支或您正在寻找的分支首先可用
git branch -r
从列表中检查
origin/HEAD -> origin/main
origin/feature/branch_1
origin/feature/branch_2
origin/feature/branch_3
origin/feature/branch_4
origin/feature/your branch
建议是从 origin 本身复制列表然后执行git merge origin/feature/branch_2
。复制粘贴将删除拼写错误。
就我而言,我试图从 git 存储库的子目录执行 git 命令。请确保它是你用 git 初始化的目录,而不是它的子目录。
我建议检查您是否能够切换到您尝试合并的分支。
即使我想合并的分支在本地存储库中并且没有拼写错误,我也收到了这个错误。
我忽略了本地更改,以便可以切换到分支(也可以首选存储或提交)。之后我切换回初始分支,合并成功。
对我来说,问题是合并消息中的“双引号”。因此,当我删除双标记时,一切都神奇地起作用了。我希望能帮助别人。(对不起我的英语不好)
我有一个带有 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 rebase the-branch-to-be-merged
我使用这个 git 命令解决了这个问题,但rebase
只适用于某些情况。
对我来说,当我尝试这个时出现了问题:
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"