2008-12-10 16 views
17

Quiero añadir todos los archivos en el directorio actual a git:no se puede añadir todos los archivos a git debido a los permisos

git add . 
error: open(".mysql_history"): Permission denied 
fatal: unable to index file .mysql_history 

Eso está bien. Ese archivo está en este directorio y es propiedad de root. Quiero agregar todos los otros archivos. ¿Hay alguna forma de hacerlo sin tener que agregar manualmente cada archivo manualmente?

Sé que podría agregar el archivo para excluir o .gitignore, pero me gustaría que simplemente ignore las cosas en función de los permisos (hay muchas posibilidades de que otros archivos como este terminen en el directorio y agreguen ellos a .gitignore todo el tiempo es un dolor).

Respuesta

28

Uso git add --ignore-errors .

Esto todavía le dará un error para el archivo (s) ilegible, pero no una fatal. Los otros archivos serán agregados.

+1

Esto funciona, pero sólo en Git 2.6 y hasta parece :) – singpolyma

+0

Gracias por esto. @matli – ashishsony

+5

Si usa VS esto puede suceder. En mi caso, tuve que cerrar todas las instancias de Visual Studio. Cerrar el IIS Express y reiniciar Visual Studio también resolverá el problema. – Dhanuka777

4

¿Te ayudaría si agregaste ese archivo a tu archivo .gitignore? Por lo tanto, todos los demás archivos se versionarán y ese archivo se ignorará (a menos que lo necesite).

3

Solo excluya el archivo. Puede agregar .mysql_history a un archivo .gitignore, o agregarlo al .git/info/exclude.

Agregar una entrada a .gitignore propagará la configuración con el repositorio (ya que .gitignore se almacena con el repositorio); agregarlo a .git/info/exclude lo hace "personal" porque este archivo es no propagado con el repositorio. De cualquier manera, .mysql_history será ignorado por git-add y amigos.

Puede leer más sobre ignorar archivos con Git en este man page.

4
sudo chown $(whoami): .git/objects/ -R; git add --ignore-errors . 

lo arreglaron para mí. La primera mitad arregló la propiedad, (alguien registrado como root, travieso) y la segunda mitad cometió errores no fatales. La segunda mitad en sí misma me ayudó a rastrear qué directorio era propiedad de root.

1

Estaba usando la solución @matli pero todavía tengo problemas a veces. Terminé usando

git add --ignore-errors --force .

Cuestiones relacionadas