git pull显示“严重:找不到远程引用refs / heads / xxxx”并挂断


75

我创建了一个名为“ 6796”的分支,然后将其推送到远程,在另一台计算机上签出,进行其他编辑,推送,然后将其与主服务器合并,然后在另一台本地和远程(git push :6796)上将其删除。机。现在,当我运行时git pull

fatal: Couldn't find remote ref refs/heads/6796
user@host:~/path/to/repo$ fatal: The remote end hung up unexpectedly

git pull origin master工作正常。在我看来,有一些6796参考挂起了...如何解决此问题?

Answers:


143

可能有一些命令可以解决该问题,但首先要在您的.git/config文件中查找对该分支的引用,然后将其删除。


9
谢谢!我在.git / config中有这行: [remote "origin"] fetch = +refs/heads/6796:refs/remotes/origin/6796 我猜这行在那里,因为我删除了远程分支并从另一台服务器上删掉了它。因此在该服务器上git知道删除操作,并删除了.git / config中的行,但是这里没有通知git删除操作。非常感谢!
mdesantis 2011年

prune@jweyrich提供的选项很好地“刷新”了原始状态
v01pe 2013年

在您的根目录中查找.gitconfig
Lior Elrom,2016年

22

您还必须删除本地分支:

git branch -d 6796

另一种方法是从本地存储库中修剪所有过时的分支。这将删除所有已经从远程删除的本地分支:

git remote prune origin --dry-run

这是做到这一点的好方法(git remote prune)。git是否有可能删除远程上仍然存在的内容?我的意思是说此命令危险
吗?

2
@NickSoft,引用官方文档Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>". With --dry-run option, report what branches will be pruned, but do no actually prune them.
jweyrich 2012年

3

当我尝试使用名称中的单引号'时,我遇到了类似的问题。

我必须转义请求请求的名称:

git pull https://github.com/foo/bar namewithsingle"'"quote

3

在以下情况下也可能引发此错误。

您想检出feature从远程存储库调用的分支,但抛出错误,因为feature/<feature_name>本地存储库中已经有调用的分支。

只需feature使用其他名称签出分支:

git checkout -b <new_branch_name> <remote>/feature

2

当我尝试使用“。”提交到新创建的存储库时,我遇到了一个类似的问题以它的名字。我看到其他几个人在放置“。”时有不同的问题。在回购名称中。

我刚刚重新创建了仓库

replaced "." with "-"

可能还有其他方法可以解决此问题,但这对我来说是一个快速修复,因为它是一个新的回购协议。


你叫什么名字?
0xcaff 2014年

1

要在本地拉远程分支,请执行以下操作:

git checkout -b branchname //创建一个具有相同名称的本地分支并签出

git pull origin branchname //将远程的拉到本地的一个

唯一一次这样做,但没有成功,我删除了存储库,再次克隆,然后重复上述两个步骤。有效。


1

我有同样的错误。问题是分支被删除,释放。但是在PhpStorm中,我仍然可以在远程分支中看到它。我可以作为本地分支结帐。然后做git pull给这个错误。

因此需要检查该分支是否确实存在于远程。


0

就我而言,它发生在master分支上。后来发现,我对项目的访问被项目经理意外吊销。为了进行交叉检查,我访问了审阅站点,但看不到该分支和该项目的其他任何提交。


0

我遇到过同样的问题。但就我而言,这是由于我的分支机构的名字。分支的名称在我的GitHub存储库中自动设置为main而不是master。

git pull origin master(没有用)。

我在GitHub上确认分支的名称实际上是否为master,发现实际名称为main。所以下面的命令对我有用。git pull origin主

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.