次のgitコマンドが私のリポジトリの1つでハングします(応答しません)。
git status
git diff
git stash
git add
私ができないという事実git add
は、応答がないのは単に非常に大きなファイルが原因であるのではないことを信じさせます。 git stash
もハングします。これは、Originとの通信の問題だけではないと思います。
git remote show Origin
は予想されるリモートURLを示します。私はブランチで作業しており、名前が変更されていないことを確認しました。 (FWIW、Originはbitbucketでホストされています。)
上記のコマンドはすべて別のリポジトリで期待どおりに応答するため、インターネット接続が原因ではありません。
これをトラブルシューティングするための他のヒントはありますか?
価値があるものは何でも、git fsck
(コメントの1つに従って)git gc
。実行中git status
およびgit commit
、いくつかのファイルを処理した後、私のためにぶら下がっている場所。これらのコマンドを実行すると問題が修正されました。実際に問題を修正したコマンドはありません。
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
:インデックスの更新に時間がかかりすぎる場合、進行状況バーを表示しますインデックスの更新は通常非常に高速ですが、それでも時々長い時間がかかることがあります。
- コールドキャッシュ は1つです。
- または、リポジトリを新しい場所にコピーします(*)。
「
git status
」がハングしていないことをユーザーに知らせるために何かを表示するのは良いことです。それは何かをするのに忙しいだけです。(*)この場合、インデックス内のすべての統計情報が無効になり、gitはすべてのファイルコンテンツの再ハッシュにフォールバックして、インデックス内の統計情報の更新に違いがあるかどうかを確認します。これはかなり高価です。 git.gitほどの小さなリポジトリであっても、3秒かかります。
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
は再び応答します。