无法连接到缓存守护程序?

时间:2012-10-08 09:37:04

标签: git

我能够推得很好,但我突然得到这个“致命”的消息

$ git push
fatal: unable to connect to cache daemon: Bad file descriptor
Username for 'https://github.com':
Password for 'https://myid@github.com':
fatal: unable to connect to cache daemon: Bad file descriptor
...

为什么我突然得到这个消息?我该怎么办?

我不确定这可能会有所帮助,但是从现在到此问题发生之前

  • 我正在研究一些不是主人的分支
  • 我在git config --global中间改变了我的user.email
  • 我的计算机崩溃了很长时间,因为我将错误的项目连接器(不是用于计算机)连接到它,我相信某些文件已被损坏
  • 在那之后,当我尝试进行新的提交时,我收到以下消息:致命:无法将HEAD解析为有效的参考。
  • 然后我通过将配置中的HEAD修改为“ref:refs / heads / master”
  • 来修复它
  • 编码并在本地成功提交更改后,当我尝试将其推送到远程服务器时,收到以下错误消息

    $ git push

    致命:无法连接到缓存守护程序:错误的文件描述符 “https://github.com”的用户名: “https://myid0@github.com”的密码: 致命:无法连接到缓存守护程序:错误的文件描述符 致命:松散的物体8ce710b1c78658e066cd2309b12b7766d1be4920(存储在.git / objects / 8c / e710b1c78658e066cd2309b12b7766d1be4920中)已损坏 致命:远程端意外挂断 致命:远程端意外挂断 致命:写错误:文件描述符错误

  • 因此,我备份了我所做的所有更改,删除了repo,从github克隆了repo,并对备份文件进行了一些更改,添加,提交并推送了更改...但仍然该消息不会消失:(

6 个答案:

答案 0 :(得分:30)

https://stackoverflow.com/a/14160580

为我解决了这个问题:

sudo chown kev ~/.git-credential-cache/socket

如果您不了解您的用户,请将kev替换为您的用户:

whoami

答案 1 :(得分:3)

  

当您尝试使用" sudo"提交时会出现此错误。
  所以保存的密码是" sudo"仅限用户,
  
  但是当你尝试以普通用户身份提交时,   发生此错误,正常用户的权限被拒绝   你可以通过使用以上答案Kev Price来摆脱这个错误

答案 2 :(得分:1)

谨防操纵~/.git-credential-cache/socket(与chown一样),因为它自2014年起已经移动,正如Git 2.13(2017年第二季度)所承认的那样

commit 612c49e查看commit 60759bacommit e7f136b(2017年3月17日)和Devin Lehmacher (lehmacdj)(2017年3月13日)。 Junio C Hamano -- gitster --于2017年3月24日commit 78cf8ef合并)

  

credential-cache:对{

>使用XDG_CACHE_HOME      

git-credential-cache跟随 XDG base path specification   默认。此可提高与其他应用程序的一致性并提供帮助   保持用户的混乱'主目录

     

检查旧套接字位置~/.git-credential-cache/,然后使用   ~/.git-credential-cache/socket如果该目录存在而不是   强制之前使用git credential-cache的用户迁移到   新的XDG兼容位置。

     

否则请使用以下套接字$XDG_CACHE_HOME/git/credential/socket   XDG基本路径规范。
  使用子目录credential/以防万一   其他文件将在$XDG_CACHE_HOME/git/下缓存到   使插座的目的明确。

答案 3 :(得分:1)

快速解决方案

这是解决问题所需的单个命令。

sudo chown $(whoami) ~/.cache/git/credential/socket

如果您想更深入地了解导致此问题的原因,请阅读其他答案。

答案 4 :(得分:0)

尝试设置全局gitconfig。

git config --global user.name "your username"
git config --global user.email "your email address"

答案 5 :(得分:0)

可能是由于您首先以root用户身份设置,然后又想将git用作另一个用户。您可以更改git缓存权限:

chown -R用户:user_group〜/ .cache / git /