2010-09-15 4 views

Répondre

27

Comme ce thread illustrates, cela est généralement un problème d'espace disque:

$ git status 
fatal: unable to write new_index file 

One cause of this that I found was that my file system had run out of space.
Finding large directories with something like the following helped clean up some log files that had run wild :

$ du -h/| grep ^[0-9.]*G 

Note: vous pouvez le voir pour

Problem still remained so I ran File Monitor from Sysinternals Suite.
It seems that Eclipse is accessing index file constantly and blocks command line git

Yeah, looks like Windows Defender strikes again. I always forget to disable that damn thing. I can't believe how broken it is. Destroys Blu-ray playback at home, breaks Git at work...

+3

+1 pour la partie Windows Defender! http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-Defender-on-or-off fait l'astuce –

+0

également vous pouvez modifier les autorisations (dans Windows) sur le dossier .git en se désintéressant la lecture seule –

+0

C'est pourquoi AV like MSE vous permet de sélectionner les dossiers à ne pas surveiller. –

3

Je solution trouvée. Juste besoin de libérer de l'espace disque.

+1

J'écrivais la même chose;) – VonC

+0

Oui, 0 octets libre sur mon disque était à l'origine de cette erreur. –

6

Je recevais la même erreur alors que je la fusion d'un git qui était monté sshfs. Il n'y avait pas de pénurie d'espace nulle part. Dans mon cas, la solution consistait à ajouter une option -o workaround = rename à la commande sshfs mount.

Comme si: sshfs -o idmap = uid utilisateur = [uid lokal] -o gid = [lokal gid] -o solution = renommer [hôte]: [mountpoint]

14

Si vous utilisez TortoiseGit, cette erreur (ou plus récemment: erreur: Impossible d'écrire l'index) est très probablement causée par avoir TortoiseGit icône superpositions activé. Pour désactiver les recouvrements d'icône, allez à:

TortoiseGit> Paramètres> Icône Superpositions

et définir cache d'état à Aucun. Cela peut être corrigé dans une future version de TortoiseGit, mais pour l'instant il semble être commun.

+0

Cela a été la cause du problème pour moi. Merci beaucoup. – TheXenocide

+0

Cela a été la cause dans mon cas aussi. Merci d'avoir posté cette réponse. – Jon

+0

Ouais, c'était pour moi - en quelque sorte. J'ai dû réellement tuer le processus 'TGitCache.exe', mais cela a fait l'affaire. –

3

J'ai suivi toutes les solutions ici et aucune d'elles n'a fonctionné. Je n'ai pas manqué d'espace disque, j'ai désactivé Windows Defender, les superpositions d'icônes désactivées et autres joyeusetés. J'avais des tonnes de fichiers à importer et peut-être que cela causait le problème (j'avais des bibliothèques boost entre autres choses). J'ai simplement ouvert "Git Bash" et émis un nombre de git add et git commit et tout s'est bien passé. Cela a quelque chose à voir avec TortoiseGit mais je ne sais pas quoi. Il semble s'étouffer sur un grand nombre de fichiers ou une profondeur de répertoire importante.

0

J'ai utilisé Unlocker sur .git\index.lock pour déverrouiller toutes les poignées qui sont maintenues ouvertes par d'autres processus. Dans mon cas c'était TGitCache.exe.

1

J'avais ce problème, mais j'étais capable de commettre avec msysgit.J'ai mis à jour tortoisegit, et a également remarqué que ma version de msysgit n'était pas synchronisée avec la tortue git. Je ne suis pas sûr si la dernière version l'a corrigé, ou si c'était dû à des versions différentes de tortoise et de msysgit. Quoi qu'il en soit, une autre chose à vérifier. Tout a commencé à travailler après les mettre à jour à la fois à TortoiseGit 1.7.10.0 version git 1.7.10.msysgit.1

3

J'ai eu cette erreur en utilisant Cygwin et git-svn. La solution qui a fonctionné pour moi était de faire la collecte des ordures (aussi étrange que cela semblait à l'époque):

 

$ git gc 

2

J'ai eu le même problème. Dans mon cas, les solutions ci-dessus n'ont pas fonctionné.

La raison de cette erreur est que le fichier .git/index a été endommagé pour une raison inconnue. Je viens de renommer le fichier à autre chose et lancer le 'git add'. commande de git bash et cela a fonctionné.

Espérons que cela aide quelqu'un.

+0

Cela a fait l'affaire pour moi. Mais au lieu d'exécuter 'git add .', j'ai lancé' git reset', qui a généré à nouveau le fichier d'index sans ajouter inutilement tous les changements à la zone de transit. J'ai eu SourceTree ouvert au repo sur un support SSHFS tout en interagissant simultanément avec lui via le terminal; quelque chose peut avoir causé la corruption du fichier. – sffc

0

Pour moi, c'était un problème de verrouillage de fichier.

Pour résous I:

  1. Copié le fichier d'index (situé dans le dossier ".git" caché)
  2. supprimé l'original
  3. Renommé la copie de retour à 'index'

Espérons que cela aide!