Les commandes git suivantes se bloquent (ne répondent pas) dans l'un de mes référentiels:
git status
git diff
git stash
git add
Le fait que je ne puisse pas git add
m'amène à penser que la non-réponse n'est pas simplement due à de très gros fichiers. Puisque git stash
se bloque également, je ne pense pas que ce soit simplement un problème de communication avec Origin.
git remote show Origin
affiche l'URL distante attendue. Je travaille sur une branche et j'ai vérifié qu'elle n'a pas été renommée. (FWIW, l'Origin est hébergé sur bitbucket.)
Toutes les commandes ci-dessus répondent comme prévu dans un référentiel différent, donc ce n'est pas dû à la connexion Internet.
D'autres conseils pour résoudre ce problème?
Pour tout ce que ça vaut, essayez git fsck
(selon l'un des commentaires) puis git gc
. Lors de l'exécutiongit status
et git commit
, ils m'ont suspendu après avoir traité un certain nombre de fichiers; et l'exécution de ces commandes a résolu le problème. Je ne sais pas quelle commande a réellement résolu le problème.
Il a répondu au bout de 15 minutes environ, et répond maintenant immédiatement sans délai.
Avec Git 2.20 (Q4 2018), vous pourrez au moins vérifier que git status
fait quelque chose (au lieu de simplement y rester): il apprend à afficher une barre de progression lors de l'actualisation l'indice prend beaucoup de temps.
Voir commit ae9af12 (15 septembre 2018) par Nguyễn Thái Ngọc Duy (pclouds
) .
(Fusionné par Junio C Hamano - gitster
- in commit 4d87b38 , 19 octobre 2018)
status
: affiche la barre de progression si l'actualisation de l'index prend trop de tempsLe rafraîchissement de l'index est généralement très rapide, mais il peut parfois prendre du temps.
- Cold cache en est un.
- Ou copier un dépôt à un nouvel endroit (*).
Il est bon de montrer quelque chose pour informer l'utilisateur "
git status
"n'est pas suspendu, il est juste occupé à faire quelque chose.(*) Dans ce cas, toutes les informations statistiques dans l'index deviennent invalides et git revient à ressasser tout le contenu du fichier pour voir s'il y a une différence entre la mise à jour des informations statistiques dans l'index. C'est assez cher. Même avec un dépôt aussi petit que git.git, cela prend 3 secondes.
Git peut être en train de construire un index de fichiers non suivis. Après avoir ajouté plusieurs milliers de nouveaux fichiers dans un référentiel fraîchement cloné, git status
semble se bloquer pendant plus de 2 minutes, puis répond:
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').
Si vous avez une situation similaire, envisagez de déplacer les fichiers non suivis hors du référentiel et confirmez que git status
est à nouveau réactif.