Far*_*hti 154 git branch pull bitbucket tortoisegit
我得到这个错误拉:
您的配置指定从遥控器与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
Run Code Online (Sandbox Code Playgroud)
tor*_*rek 104
你的上游 - 你所呼叫的遥控器origin- 不再拥有,或者从来没有(仅从这些信息中无法分辨)一个名为的分支feature/Sprint4/ABC-123-Branch.有一个特别常见的原因:有人(可能不是你,或者你记得)删除了其他Git存储库中的分支.
这取决于你想要什么.请参阅下面的讨论部分.您可以:
您必须正在运行git pull(如果您正在运行,git merge您将收到不同的错误消息,或根本没有错误消息).
当你运行时git fetch,你的Git会根据你配置部分中的url一行联系另一个Git [remote "origin"].那个Git运行一个命令(upload-pack),除其他外,它会向你的 Git 发送所有分支的列表.您可以使用它git ls-remote来查看它是如何工作的(尝试它,它是教育性的).以下是我在Git存储库上运行此代码时获得的代码片段git:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
Run Code Online (Sandbox Code Playgroud)
的refs/heads/条目列出所有的遥控器上存在的分支,1与相应的ID提交沿(对于refs/tags/条目的ID可以指向标签对象,而不是提交).
您的Git将获取每个分支名称,并根据同一部分中的行进行更改.在这种情况下,你的Git替代用,例如.你的Git会对每个遇到的分支名称执行此操作.fetchremoterefs/heads/masterrefs/remotes/origin/master
它还会在特殊文件中记录原始名称FETCH_HEAD(如果您查看自己的.git目录,可以看到此文件).此文件保存提取的名称和ID.
该git pull命令是一个方便的捷径:它git fetch在适当的遥控器上运行,然后git merge(或者,如果这样指示的话git rebase),根据该[branch ...]部分的指示,需要合并(或变基)所需的任何参数.在这种情况下,您的[branch "feature/Sprint4/ABC-123-Branch"]部分说要从中获取origin,然后与名称下找到的任何ID合并refs/heads/feature/Sprint4/ABC-123-Branch.
由于在该名称下找不到任何内容,因此git pull抱怨并停止.
如果您将其作为两个单独的步骤运行,git fetch然后git merge(或git rebase),您的Git将查看您的缓存remotes/origin/远程跟踪分支,以查看要合并或重新绑定的内容.如果是在同一时间这样的一个分支,你仍然可以拥有远程跟踪分支.在这种情况下,您不会收到错误消息.如果从来就没有这样的一个分支,或者如果已经运行git fetch有--prune(其中去除死皮远程跟踪分支),让你有没有相应的远程追踪分支,你会得到一个投诉,但它是指origin/feature/Sprint4/ABC-123-Branch代替.
在任何一种情况下,我们都可以得出结论,feature/Sprint4/ABC-123-Branch现在远程名称上不存在origin.
它可能确实存在,您可能从远程跟踪分支创建了本地分支.如果是这样,您可能仍然拥有远程跟踪分支.您可能会调查以查看谁从远程移除了分支,以及为什么,或者您可能只是推送某些内容来重新创建它,或删除远程跟踪分支和/或本地分支.
1好吧,它至少会承认所有这一切.但除非他们专门隐藏了一些引用,否则列表中包含所有内容.
Ext*_*me 48
如果您/某人重命名了分支,也会发生这种情况.因此,请按照以下步骤操作(如果您知道重命名了分支名称)假设先前的分支名称为,wrong-branch-name并且有人将其重命名为correct-branch-nameSo.
git checkout correct-branch-name
Run Code Online (Sandbox Code Playgroud)
git pull (你会看到这个"你的配置指定..")
git branch --unset-upstream
Run Code Online (Sandbox Code Playgroud)
git push --set-upstream origin correct-branch-name
git pull (你不会得到更早的消息)
Mal*_*abi 37
检查您的远程分支是否可用.我有同样的问题,终于意识到远程分支被某人删除了.
nea*_*mcb 15
这是一个比较常见的错误,现在因为很多项目正在将他们的master分支到其他名称,如main,primary,default,root,reference,latest,等,如在讨论Github上计划更换种族不敏感的术语如“主”和“白名单”。
要修复它,首先要找出项目正在使用的内容,您可以通过他们的 github、gitlab 或其他 git 服务器找到。
然后执行此操作以捕获当前配置:
$ git branch -vv
...
* master 968695b [origin/master] Track which contest a ballot was sampled for (#629)
...
Run Code Online (Sandbox Code Playgroud)
找到描述master分支的行,并注意远程仓库是否被调用origin,upstream或者其他什么。
然后使用该信息,将分支名称更改为新的分支名称,例如,如果它说您当前正在跟踪origin/master,请替换main:
git branch master --set-upstream-to origin/main
Run Code Online (Sandbox Code Playgroud)
您还可以重命名自己的分支以避免将来混淆:
git branch -m main
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我只是缺乏远程分支上的初始提交,所以本地分支没有找到任何要拉的东西,它给出了错误消息。
我做了:
git commit -m 'first commit' // on remote branch
git pull // on local branch
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令轻松地将本地分支与远程分支链接起来:
git checkout <your-local-branch>
git branch --set-upstream-to=origin/<correct-remote-branch> <your-local-branch>
git pull
Run Code Online (Sandbox Code Playgroud)
我发现当从默认分支master已重命名为 的存储库中提取更新时,经常会发生此错误main。master在2020年分支更名的趋势之后,遇到了很多这种情况main。
因此,如果您之前使用默认分支克隆了一个存储master库,并且该分支已重命名为main,则解决方法之一是将上游从 master 指向 main:
git branch --set-upstream-to=origin/main master
如果该命令成功,您应该看到如下消息:
分支“master”设置为从“origin”跟踪远程分支“main”。
然后,您可以将本地分支从master重命名为main(以与远程分支名称保持一致)git branch -m master main
小智 5
对我来说,这是一个区分大小写的问题。我的本地分支是Version_feature2,而不是Version_Feature2。我使用正确的大小写重新检查了我的分支,然后git pull工作了。
当原始分支名称存在大小写问题时,也可能会收到此错误。
例如:origin分支为team1-Team,而本地分支的结帐为team1-team。然后,这T在-Team和t中-team能引起这样的错误。以我为例。因此,通过使用origin分支的名称更改本地名称,可以解决错误。
小智 5
我对 master/main 分支也有类似的问题。就我而言,我的硬盘上没有足够的可用空间。释放一些空间后,它起作用了。
我认为这是因为文件 /.git 需要一些空间来编辑其文件。例如文件:'refs/heads/feature/Sprint4/ABC-123-Branch'