20

正常にプッシュできますが、突然この「致命的な」メッセージが表示されます

$ 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 プッシュ

    致命的: キャッシュ デーモンに接続できません: 不正なファイル記述子 'https://github.com' のユーザー名: 'https://myid0@github.com' のパスワード: 致命的: キャッシュ デーモンに接続できません: 不正なファイル記述子致命的: 緩いオブジェクト 8ce710b1c78658e066cd2309b12b7766d1be4920 (.git/objects/8c/e710b1c78658e066cd2309b12b7766d1be4920 に保存) が破損しています

  • そのため、行ったすべての変更をバックアップし、レポを削除し、レポを github から複製し、バックアップ ファイルでいくつかの変更を行い、変更を追加、コミット、およびプッシュしましたが、それでもそのメッセージは消えません。 :(

4

6 に答える 6

35

https://stackoverflow.com/a/14160580

私のためにこれを解決しました:

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

ユーザーがわからない場合は、 kev をユーザーに置き換えます。

whoami
于 2014-03-28T11:36:55.417 に答える
10

Git 2.13 (2017 年2 四半期) で認められているように、2014 年以降に移動したため、~/.git-credential-cache/socket( のように)操作することに注意してください。chown
~/.cache/git/credential/

commit 612c49ecommit 60759ba (2017 年 3 月 17 日)、およびcommit e7f136b (2017 年 3 月 13 日) by Devin Lehmacher ( lehmacdj)を参照してください。
( 2017 年 3 月 24 日、コミット 78cf8efJunio C Hamanoによってマージされました)gitster

資格情報キャッシュ:XDG_CACHE_HOMEソケットに使用

デフォルトでは、 XDGベースパス仕様git-credential-cacheに従います。これにより、他のアプリケーションとの一貫性が向上し、ユーザーのホーム ディレクトリが乱雑になるのを防ぐことができます

以前に使用していたユーザーに新しい XDG 準拠の場所への移行を強制するのではなく、古いソケットの場所を確認し、そのディレクトリが存在する場合は~/.git-credential-cache/使用 します。~/.git-credential-cache/socketgit credential-cache

$XDG_CACHE_HOME/git/credential/socketそれ以外の場合は、 XDG ベース パス仕様に従ってソケットを使用します。将来他のファイルがキャッシュされる場合に備え
て、サブディレクトリを使用し、ソケットの目的を明確にします。credential/$XDG_CACHE_HOME/git/


注: Git 2.29 (2020 年第 4 四半期) では、ツリー内コードのいくつかの場所で( man )サブコマンド、特にビルトインを " " 形式で実行できることにまだ依存していましたが、修正されました。gitgit-foo

commit c0e190ccommit 7cff3b6commit 675df19 (2020 年 8 月 26 日) by Junio C Hamano ( gitster)を参照してください。
( 2020 年 9 月 3 日、コミット 18aff08Junio C Hamanoによってマージされました)gitster

credential-cache: 使用するchild_process.args

child_process構造体にはコマンドラインを定式化するための が埋め込まれているので、長さを正しく維持する必要がstrvec argsあるアウトオブラインを使用する代わりに使用しましょう。argv[]

また、gitサブコマンドを生成するときは、コマンド リストから省略し、代わりに構造.git_cmd内のビットを使用します。child_process

したがって、これ以上 を呼び出す必要はありませgit-credential-cache--daemongit credential-cache--daemon

于 2017-04-11T20:38:12.470 に答える
4

このエラーは、「sudo」を使用してコミットしようとすると発生します。
したがって、保存されたパスワードは「sudo」ユーザー専用です.

しかし、通常のユーザーとしてコミットしようとすると、
このエラーが発生します. 通常のユーザーのアクセス許可が拒否されまし
た. 上記の回答を使用して、このエラーを取り除くことができます Kev Price

于 2014-08-11T09:20:06.677 に答える