【问题标题】:How to resolve git's "not something we can merge" error如何解决 git“不是我们可以合并的东西”错误
【发布时间】:2013-05-27 14:36:06
【问题描述】:

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

fatal: branch-name - not something we can merge

如何解决此错误?

【问题讨论】:

    标签: git branching-and-merging


    【解决方案1】:

    How does "not something we can merge" arise? 所示,此错误可能是由于您尝试拉取一个不存在的分支而导致分支名称中的拼写错误。

    如果这不是问题(如我的情况),很可能您没有要合并的分支的本地副本。 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
    • 这发生在我被 cd 到错误的项目时(即它是一个不同的 repo,甚至没有我想要合并的分支)
    • 如果您尝试在命令行中同步分叉 (help.github.com/articles/syncing-a-fork),此错误可能是因为您错过了第 0 步。什么?没有列出第 0 步?是的,这就是为什么它很容易错过。 “在你可以将你的 fork 与上游存储库同步之前,你必须在 Git 中配置一个指向上游存储库的远程。”
    • Git requires local knowledge of both branches in order to merge those branches
    • 为我工作(我已从存储库克隆)
    【解决方案2】:

    这是一个愚蠢的建议,但请确保分支名称中没有错字!

    【讨论】:

    • 不是那么傻,因为“错字”可能会减少分支尚未被获取(因此在本地未知)的事实.. Git 做的事情与 CVS 或 SVN 不同..跨度>
    • 如果分支名称包含逗号 (,) 或撇号 (') 等字符,也可能会导致问题。
    • 还要确保您在正确的仓库或终端窗口/选项卡中,特别是如果您同时处理多个仓库。
    • 这发生在我身上,主/主重命名不均匀!
    【解决方案3】:

    当从远程上游拉取时,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]
    

    在其他情况下,我发现如果远程(原点,上游)分支不存在,也会发生“我们不能合并的东西”错误。这似乎很明显,但您可能会发现自己在只有 master 的 repo 上执行 git merge origin/develop

    【讨论】:

    • 我真的不知道为什么这个答案没有获得与上述答案一样多的选票。 'git fetch -all' 是在合并远程分支之前通常会错过运行的命令,它为我解决了问题。
    • 因为 fetch 不会自动拉取,您必须手动执行此操作。所以一对 fetch --all 和 pull --all 就可以了。
    • 谢谢! git remote add upstream 是我错过的重要事情,它为我解决了这个问题。我认为一个常见的错误是假设一个分叉自动知道它是从哪里分叉的。
    【解决方案4】:

    我也有这个问题。该分支看起来像“用户名/主控”,这似乎让 git 感到困惑,因为它看起来像我定义的远程地址。对我来说使用这个

    git merge origin/username/master
    

    工作得很好。

    【讨论】:

    • 我也必须在远程分支的名称前加上origin/
    • 如果分支名称中包含正斜杠 /,则必须执行此操作。
    【解决方案5】:

    以下方法每次都适合我。

    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
    

    【讨论】:

    • 这对我有用,谢谢。我这基本上是正确的解决方案:基本上确保在尝试合并之前检查源分支。
    【解决方案6】:

    这可能是因为该分支不在您的本地。合并前使用

    git fetch origin
    

    【讨论】:

      【解决方案7】:

      这个答案与上述问题无关,但我遇到了类似的问题,也许这对某人有用。我正在尝试将我的功能分支合并到 master,如下所示:

      $ git merge fix-load
      

      为此收到以下错误消息:

      merge: fix-load - 不是我们可以合并的东西

      我研究了所有解决方案,但并非没有一个有效。

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

      【讨论】:

      • 对我来说,添加原点有效。以您为例,git merge origin/fix-loads 工作。
      【解决方案8】:

      如果您没有使用 origin 关键字并且该分支不是您自己的分支,您也可能会遇到此错误。

      git checkout <to-branch> 
      git merge origin/<from-branch>
      

      【讨论】:

        【解决方案9】:

        您收到此错误是因为您要合并的分支在您的本地存储库中不存在。

        所以,首先通过以下命令检出你想要合并到主分支的分支:

        git checkout branch_name_to_merge
        

        在此之后尝试通过以下命令将其与 master 分支合并:

        git merge branch_name_to_merge
        

        【讨论】:

        • 如果您不注意分支的名称(即拼写错误),也会发生这种情况:)
        • 这对我有用。当我使用 Git 选项卡在 Atom 中工作并使用下拉菜单切换分支时,有时我必须转到命令行并 checkout 分支
        【解决方案10】:

        此错误表明您要合并更改的分支(即在您的情况下为分支名称)在您的本地不存在,因此您应该签出分支并获取本地更改。 结帐到您的主分支并获取,然后按照以下步骤操作:

        git checkout branch-name
        git pull
        git checkout new-branch-name
        git merge branch-name
        

        【讨论】:

        • 我会很挑剔,说我不认为错误消息 suggests 类似于上述内容 :-)
        【解决方案11】:

        我今天直接从master拉取另一个分支合并到我的分支时遇到了这个问题,我必须先结帐并拉出我正在合并的分支,然后才能成功地将这个分支合并到我的分支中。

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

        【讨论】:

          【解决方案12】:

          我在执行git merge BRANCH_NAME "some commit message" 时收到此错误 - 我忘记为提交消息添加 -m 标志,因此它认为分支名称包含评论。

          【讨论】:

            【解决方案13】:

            在我看来,我错过了将本地分支映射到远程仓库。我在下面做了,效果很好。

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

            【讨论】:

              【解决方案14】:

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

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

              merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
               - not something we can merge
              

              【讨论】:

              • 当您对答案投反对票时,请提供评论。也许这不是原始海报的问题,但它可能是错误消息的原因(我自己遇到了问题)。
              【解决方案15】:

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

              【讨论】:

              • 下划线似乎也有问题。 +1
              • 我经常在分支名称中使用下划线@AndersLindén
              • 括号也有问题...+1
              【解决方案16】:

              就我而言,问题出在分支名称中。我的新分支名称包含括号,一旦我将其重命名并删除括号,它就会排序。

              【讨论】:

                【解决方案17】:

                我知道回答晚了,但我也遇到了同样的问题,所以我运行了以下命令

                git checkout master
                

                然后

                git pull origin branch-name
                

                解决了我的问题

                【讨论】:

                  【解决方案18】:

                  对于后代:就像 AxeEffect 所说...如果您没有拼写错误,请检查您的本地分支名称中是否有荒谬的字符,例如逗号或撇号。正是刚刚发生在我身上。

                  【讨论】:

                  • 或下划线。 +1
                  【解决方案19】:

                  我建议检查您是否能够切换到您尝试合并的分支。

                  即使我要合并的分支位于本地存储库中并且没有拼写错误,我也收到此错误。

                  我忽略了本地更改,以便可以切换到分支(也可以首选存储或提交)。之后我切换回初始分支,合并成功。

                  【讨论】:

                    【解决方案20】:

                    你正在尝试合并的分支目前可能无法被你的 git 识别 所以执行 git branch 看看你要合并的分支是否不存在,如果不存在则执行 git pull 现在,如果您执行git branch,则该分支现在将可见, 现在你执行git merge &lt;BranchName&gt;

                    【讨论】:

                      【解决方案21】:

                      我遇到了同样的问题。我使用以下命令修复了它:

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

                      【讨论】:

                        【解决方案22】:

                        在我的例子中,我试图从 git 存储库的子目录执行 git 命令。 请确保它是你用 git 初始化的目录,而不是它的子目录。

                        【讨论】:

                        • 这里也一样。我的终端位于多仓库项目的同级目录中。
                        【解决方案23】:

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

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

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

                        【讨论】:

                          【解决方案24】:

                          这可能听起来很奇怪,但请记住设置您的 git 电子邮件和姓名:

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

                          【讨论】:

                            【解决方案25】:

                            对我来说,问题是合并消息中的“双引号”。因此,当我删除双标记时,一切都神奇地起作用了。我希望能帮助别人。 (对不起我的英语不好)

                            【讨论】:

                              【解决方案26】:

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

                              【讨论】:

                                【解决方案27】:

                                我有同样的问题...我是一个完整的初学者 就我而言,它发生的原因是我试图这样做:git merge random_branch/file.txt 当我停用 file.txt 并让分支名称 (lol) kkfdskfskdfs 时,我的问题得到了解决

                                git merge random_branch 工作得很好

                                【讨论】:

                                  【解决方案28】:

                                  git rebase the-branch-to-be-merged

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

                                  【讨论】:

                                  • 我会避免变基,我认为这个基本的分支合并错误似乎非常极端。
                                  【解决方案29】:

                                  我的目标是将 Branch2 代码合并到 Branch1 中

                                  我在合并时收到以下消息。

                                  我的分支 Branch1 和 Branch2。请在您的项目文件夹中使用这些分支。

                                  最初我只有 Branch1ma​​ser,在这种情况下,我收到了下面提到的消息。

                                  现在我已经签出到 Branch2。

                                  现在 Branch1Brnach2ma​​ster 都可以在我的项目文件夹中使用了。

                                  现在开始合并步骤:

                                  1. git checkout Brnach1
                                  2. git 合并 Branch2

                                  最后我们将 Brnach2Branch1

                                  合并

                                  【讨论】:

                                    【解决方案30】:

                                    我必须建议检查所有分支或您正在寻找的分支首先可用

                                    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。复制粘贴将消除拼写错误。

                                    【讨论】:

                                      猜你喜欢
                                      • 2013-01-01
                                      • 1970-01-01
                                      • 2012-07-08
                                      • 2020-01-16
                                      • 1970-01-01
                                      • 2018-01-09
                                      • 1970-01-01
                                      • 2022-01-08
                                      • 2019-09-07
                                      相关资源
                                      最近更新 更多