2010-09-28 10 views
30

Tengo un proyecto existente que se ha administrado bajo git. Recientemente tuve que hacer una reconstrucción de la computadora (OS X Snow Leopard), y volviendo al proyecto, git puede seguir los cambios en el proyecto, pero no puedo guardar nada en git. Aparece el error en el título cuando intento:git problema: fatal: no se puede escribir el nuevo archivo de índice

Dans-iMac-335:[app-name-obscured] apple$ git add app/models/* 
fatal: Unable to write new index file 

¿Cuál es la mejor manera de recuperarse de esta situación? Hay una versión del repositorio heroku de esto, pero está muy fuera de sincronización con este. presumiblemente podría usar un nuevo clon como base y actualizar cada archivo, pero eso parece demasiado laborioso y propenso a errores.

¿Qué es lo que git busca aquí que no puede encontrar y hay un cambio que lo restaurará?

Por cierto, los permisos de archivo son correctos a partir de lo que puedo decir - los archivos bajo control y los componentes se .git tanto de mi propiedad con acceso rw ...

Respuesta

4

¿Tiene acceso de escritura a .git (= ¿Puedes crear nuevos archivos allí y editar los existentes? Si no, ajuste los permisos del archivo.

Si tiene permisos de escritura, parece que ha encontrado un error. Se puede tratar de recuperar por

  1. crear un clon de su copia de trabajo actual
  2. quitar todos los archivos de la copia de trabajo del clon
  3. copia todos los archivos wc de su copia de trabajo actual para el clon (y no copie .git)
  4. intenten cometer algo en el clon.

Cuando el último paso funcione, debe configurar las ramas remotas desde su repositorio actual al clon, y luego puede usar el repositorio clonado como su nueva copia de trabajo.

+1

Rudi es casi seguro cierto. Incluso si el * nombre * de la cuenta en su máquina anterior y su nueva máquina es el mismo, eso no es lo que le importa a OS X bajo las sábanas, es el UID lo que cuenta. Como sugirió Rudi, vea si puede hacer un cambio en un archivo como .git/config sin necesidad de sudo. Si no puede (lo que sospecho es el caso), entonces la solución probablemente sea sudo para chown todo a su nuevo usuario. –

+0

Recientemente obtuve un nuevo Mac Book y tuve mi repositorio de git en mi red doméstica a través de un NAS. Estoy recibiendo el mismo error. fatal: el repositorio se ha actualizado, pero no se puede escribir el archivo new_index. Compruebe que el disco no esté lleno o que no se exceda la cuota , y luego "git reset HEAD" para recuperar. MacBook-Pro: cuenta de tiempo perdido $ git reset CABEZA error: No se pudo escribir el nuevo archivo de índice. fatal: No se pudo restablecer el archivo de índice a la revisión 'HEAD'. MacBook-Pro: cuenta de tiempo perdido $ ¿Puedes confirmar que este es el mismo error? Y si es así, ¿necesito crear un repositorio completamente nuevo? –

3

Estaba usando Parallels ejecutando Ubuntu en mi Mac. Podría comenzar, pero no agregar. Creo que el problema es que git add requiere una sincronización atómica con la base de datos git subyacente. Y dado que el sistema de archivos que estaba usando estaba realmente en mi Mac y Parallels estaba exportando desde mi Mac a través de un recurso compartido de red. Creo que esto significa que Git no pudo hacer lo que quería. Mover los archivos localmente solucionó el problema (en mi caso esto fue fácil ya que estaba usando DropBox en mi Mac, así que acabo de instalar DropBox en mi Ubuntu corriendo Parallels)

+1

Tengo el mismo problema en VirtualBox y mi sistema de archivos no está lleno. Es un poco frustrante que Dropbox sea la respuesta, pero no veo una mejor solución. – Ivar

60

Me encontré con la misma situación, resultó que mi sistema de archivos estaba lleno.

+1

Apoyo esta respuesta. Aquí hay un tutorial sobre [cómo encontrar esos grandes directorios] (http://blindhog.net/linux-find-large-directories). Además, aquí está la [página del manual] (http://manpagez.com/man/1/du) para 'du'. [Editar para el descuento] – bitcycle

+1

WinDirStat es mi favorito personal para el uso del sistema de archivos. https://WinDirStat.info/ –

0

Tuve un problema similar. "git reset --hard" funcionó para mí.

+14

también debe mencionar los efectos secundarios de git reset. perderá todos los cambios locales/no comprometidos. – Avijeet

2

que he tenido un problema de simular con SFTP unidad de red (gratis). La solución es: fill chekcbox "Eliminar el destino existente antes de mover" que se encuentra en la configuración de perfil de la unidad de red SFTP.

1

me gustaría señalar una mayor causa de este error

Si va a clonar un repositorio Git que contiene otro repositorio git en ella (no submódulo), recibirá este comportamiento.

Espero que ayude a alguien.

0

Para agregar: sorprendentemente, algunos plugins de git bloquean el archivo de índice. My Eclipse Kepler tiene el complemento predeterminado, que de vez en cuando actualiza alguna información propia de git repo, bloqueando el archivo de índice durante esa operación.

2

Pude arreglar esto yendo a la carpeta .git en la aplicación git started y eliminando el archivo index.lock/index. Tuve que reindexar toda la aplicación, pero resolvió el problema.

1

Tuve el mismo problema. Todavía no sé la causa, pero mi solución es eliminar index.lock sudo rm -f index.lock, y luego di permiso de escritura para indexar sudo chmod 777 index. Después de esto, puedo escenificar y comprometerme. El problema es que tengo que hacer esto casi todas las veces que tengo algo que hacer.

1

Esto es viejo, pero la causa para mí fue Dropbox. Mi repositorio local se almacenó en mi carpeta de Dropbox, y tuve que pausar la sincronización de Dropbox antes de poder completar el comando.

0

que había utilizado este problema al usar Git en Visual Studio, y mi solución era ejecutar Visual Studio como administrador

0

que tenían el mismo error porque Copia de seguridad de Google Drive y cliente de sincronización para Windows no se habían publicado una cerradura en dos archivos dentro de este repositorio. Después de que el cliente de sincronización finalizó su trabajo, se produjo un error: Process Explorer -> Find -> Find handle o DLL -> Close Handle.

Cuestiones relacionadas