git pull显示"致命:无法找到远程ref refs/heads/xxxx"并挂起

mde*_*tis 60 git

我创建了一个名为'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
Run Code Online (Sandbox Code Playgroud)

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

Kar*_*ldt 109

有可能是解决这个问题的一些命令,但我会看在你的启动.git/config文件到该分支的引用,并删除它们.

  • 谢谢!我在.git/config中有这一行:`[remote"origin"] fetch = + refs/heads/6796:refs/remotes/origin/6796`我想这行是因为我删除了远程分支并从中删除了另一台服务器 所以在服务器git知道删除,并删除.git/config中的行,但这里没有通知git删除.非常感谢! (6认同)

jwe*_*ich 18

您还必须删除本地分支:

git branch -d 6796
Run Code Online (Sandbox Code Playgroud)

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

git remote prune origin --dry-run
Run Code Online (Sandbox Code Playgroud)

  • @NickSoft,引用[官方文档](http://www.kernel.org/pub/software/scm/git/docs/git-remote.html):`删除<name>下的所有陈旧跟踪分支.这些陈旧的分支已从<name>引用的远程存储库中删除,但仍在"remotes/<name>"中本地可用.使用--dry-run选项,报告将修剪哪些分支,但不要实际修剪它们 (2认同)

yai*_*air 12

就我而言,默认情况下选中的是“轻量级结帐”复选框,而碰巧我需要取消选中它。你能发现它吗?

在此输入图像描述

我没有调查为什么它会导致如此突然的错误,但由于它阻止了我的 Jenkins 工作几个小时,我觉得值得在这里分享其他答案。


小智 6

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

git pull origin master 
Run Code Online (Sandbox Code Playgroud)

(不工作)。

我在 GitHub 中确认了分支的名称是否确实是 master ,发现实际的名称是 main 。所以下面的命令对我有用。

git pull origin main 
Run Code Online (Sandbox Code Playgroud)