web-dev-qa-db-ja.com

応答しないgit status、diff、add(hanging)

次のgitコマンドが私のリポジトリの1つでハングします(応答しません)。

git status
git diff
git stash
git add

私ができないという事実git addは、応答がないのは単に非常に大きなファイルが原因であるのではないことを信じさせます。 git stashもハングします。これは、Originとの通信の問題だけではないと思います。

git remote show Originは予想されるリモートURLを示します。私はブランチで作業しており、名前が変更されていないことを確認しました。 (FWIW、Originはbitbucketでホストされています。)

上記のコマンドはすべて別のリポジトリで期待どおりに応答するため、インターネット接続が原因ではありません。

これをトラブルシューティングするための他のヒントはありますか?

15
yunque

価値があるものは何でも、git fsck(コメントの1つに従って)git gc。実行中git statusおよびgit commit、いくつかのファイルを処理した後、私のためにぶら下がっている場所。これらのコマンドを実行すると問題が修正されました。実際に問題を修正したコマンドはありません。

4
Antoni

15分ほどで応答しましたが、すぐにすぐに応答します。

Git 2.20(2018年第4四半期)では、少なくともgit status何かを実行していることを確認できます(単にそこにぶら下がっているのではなく):表示することを学習しますa進行状況バーインデックスの更新に時間がかかる。

commit ae9af12 (2018年9月15日) NguyễnTháiNgọcDuy(pclouds を参照してください。
Junio C Hamano-gitster- によってマージ commit 4d87b38 、2018年10月19日)

status:インデックスの更新に時間がかかりすぎる場合、進行状況バーを表示します

インデックスの更新は通常非常に高速ですが、それでも時々長い時間がかかることがあります。

git status」がハングしていないことをユーザーに知らせるために何かを表示するのは良いことです。それは何かをするのに忙しいだけです。

(*)この場合、インデックス内のすべての統計情報が無効になり、gitはすべてのファイルコンテンツの再ハッシュにフォールバックして、インデックス内の統計情報の更新に違いがあるかどうかを確認します。これはかなり高価です。 git.gitほどの小さなリポジトリであっても、3秒かかります。

4
VonC

Gitが追跡されていないファイルのインデックスを作成している可能性があります。クローンしたばかりのリポジトリに数千の新しいファイルを追加した後、git statusが2分以上ハングしたように見え、その後応答します。

It took 139.67 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').

同様の状況が発生している場合は、追跡されていないファイルをリポジトリから移動して、git statusは再び応答します。

0
abestern