我得到这个错误拉:

您的配置指定与ref合并 'refs/heads/feature/Sprint4/ABC-123-Branch',但没有 这样的裁判是拿来的。

这个错误不会出现在任何其他分支上。这个分支的特殊之处在于,它是从另一个分支的上一次提交中创建的。 我的配置文件如下:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = <url here>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "new-develop"]
    remote = origin
    merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
    remote = origin
    merge = refs/heads/feature/Sprint4/ABC-123-Branch

当前回答

在我的情况下,我已经删除了我的当前分支派生的原始分支。所以在.git/config文件中我有:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.0.5
    rebase = false

删除了simil2.0.5。我用相同的分支名称替换了它:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.1.12
    rebase = false

这个方法奏效了

其他回答

我发现当从默认主分支重命名为主分支的回购中提取更新时,经常发生这种错误。 在2020年将主分支重命名为主分支的趋势之后,遇到了很多这种情况。

因此,如果你之前用默认的主分支克隆了一个repo,并且这个分支已经重命名为main,一种修复方法是简单地将你的上游从master指向main:

Git分支——set-upstream-to=origin/main master

如果该命令成功,您应该看到如下消息:

分支'master'设置为从'origin'跟踪远程分支'main'。

然后,你可以使用git branch -m master main将本地分支从master重命名为main(以保持与远程分支名称一致)

我刚刚经历了“no such ref was fetch”的问题,以上建议都没有帮助。我解决这个问题的方法是改变我的本地配置

remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

to

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

我不知道为什么会起作用,但确实起了作用。经过这个改变,我可以拉,得到我所期望的。

如果我把它改回来,我在试图拉的时候再次得到“no such ref was fetch”。所以这绝对是修复(不是蹩脚的互联网,或情况差异,或全驱动器,或删除远程分支,或默认分支不命名为“master”等)。

我一直遇到这个问题。在我的例子中,@Jerreck关于分支名称中的案例差异的评论是导致这个错误的原因。一些Windows工具不知道区分大小写。

关闭git中的大小写敏感功能:

git config --global core.ignorecase true

注意,这将影响的不仅仅是分支名称。例如,如果您在同一个目录中有“Foo.h”和“Foo.h”(在为Windows构建软件时,这不是一个好主意),那么我怀疑您无法关闭大小写区分。

也有可能在克隆存储库时,GitLab存储库中的权限只是丢失了。

在我的情况下,我重命名了Github上的分支,它告诉我执行以下命令:

默认分支已重命名!

main is now named <new_name>

如果你有一个本地克隆,你可以通过运行:

git branch -m main <new_name>
git fetch origin
git branch -u origin/<new_name> <new_name>
git remote set-head origin -a