2010-04-27 18 views
12

Tengo un proyecto de sitio web que tiene más de 50,000 archivos sin importancia (para el desarrollo) en algunos directorios.Git ignora los archivos eliminados

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

Las cosas en/archivos ya están en el repositorio. Quiero eliminar todos los archivos en/archivos en mi copia local, pero quiero que git los ignore para que no los elimine cuando hago una extracción en el servidor web.

¿Alguna idea?

Respuesta

1

Ok He encontrado una solución. Simplemente cree un nuevo repositorio en los subdirectorios y el repositorio principal los ignorará.

+1

que funcionaría, pero no es ideal para terminar con un montón de ramas/repositorios en proyectos múltiples. De ahora en adelante podría convertirse en un dolor a medida que su lista de proyectos se hace más grande. Recomiendo familiarizarse un poco más con '.gitignore' y las herramientas de administración de índices. Hay un tutorial decente en mi respuesta anterior. Realmente es bastante fácil una vez que lo intentes una vez ... – MaurerPower

+0

@MaurerPower, aunque aprecio tu respuesta descriptiva, 'git rm --cached' no se ajusta a mis requisitos. Por ejemplo, si uso ese comando, luego confirmo y presiono. Cuando lo conecto a otro servidor, eliminará los archivos de ese servidor, aunque no los eliminó del servidor original. Hice una pequeña prueba, aquí están mis resultados: http://pastebin.com/5X0t1KGs – Petah

2

La creación de un sub-repo es una solución, pero debe hacer que ese sub-repo sea submodule.

De esa manera:

  • que mantienen un vínculo entre su contenido normal y que el contenido 'ficheros'
  • si el contenido de los 'ficheros' se desarrolla un día, puede registrar su evolución en el repositorio principal
  • puedes retirar tu repositorio principal sin "git submodule update" (es decir sin llenar el 'files' contenido
  • de despliegue, un git submodule update después de la git submodule init será suficiente para recuperar el ri Versión completa del contenido 'files'.
6

El código siguiente funciona en archivos borrados, así como modificados ignorarlo cuando lo hace un estatus git.

git update-index --assume-unchanged dir-im-removing/ 

o un archivo específico

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

Cuidado: La sugerencia anterior de archivos borrados cuando se hace una "git commit -am" incluye el archivo borrado!

Una solución que me funcionaría es que en lugar de eliminar el archivo, simplemente haga que quede en blanco. Esto es lo que solía silenciar un archivo .htaccess.

10

Ignorar todo un directorio no funcionó. Tenía que hacer esto:

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

Necesitaba cambiar '$ 3' a' $ 2' git versión 2.3.2 – crizCraig

Cuestiones relacionadas