2011-08-09 15 views
7

He buscado a través de otras preguntas pero no encuentro una solución funcional para mi proyecto. Tener un proyecto Magento, quiero excluir todo excepto esto:Git ignora todo excepto la subcarpeta

/app/design/frontend/default/theme_name # and obviously all subfolders 
/skin/frontend/default/theme_name # and all subfolders 

que he probado muchas combinaciones, pero sin suerte. Actualmente estoy atascado con este archivo .gitignore:

* 
!/app/ 
!/app/* 

app/* 
!/app/design/ 
!/app/design/* 

Pero no funciona de forma recursiva por debajo de la carpeta de diseño. Solo agregué un archivo de prueba dentro de la carpeta de diseño que creé.

Respuesta

5

Mira mi respuesta aquí: Can't understand how gitignore ignores the folders

Citando de que:

La siguiente discusión fue muy útil: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html , especialmente lo siguiente de Linus:

Eso es por diseño. Has elegido ignorar esos directorios; ellos coinciden "*" ellos mismos. Por lo tanto, 'git add'. no desciende en ellos buscando archivos.

Así que, básicamente, para cada nivel que tenga que entrar, quite la orden de esa carpeta, e ignore el contenido dentro de esa carpeta.

También, usted debe buscar en tener .gitignore en el subdirectorio en lugar de a nivel de la raíz, tal como ésta se convierte en bastante compleja si tiene que ir al nivel de subdirectorio de la raíz .gitignore debido a la explicación anterior, lo que para cada nivel , tiene que dejar de ignorar la carpeta y luego ignorar los contenidos, etc.

+0

Gracias, me ayudó a entender cómo funcionan las cosas con git :) – s3v3n

+0

Error programado por diseño: o –

+0

@Briad Gordon - Eso es Linus para ti: D – manojlds

5

Hice algunas investigaciones aquí. Lo que funcionó para mí fue:

/* 
!/directory 
!/another 
/another/* 
!/another/directory 

Con esta subdirectorios de /directory fueron seguidos correctamente. Curiosamente, no funciona con / o solo con * en la primera línea, no estoy seguro de por qué.

+0

Desafortunadamente '!/Another/directory' no funciona para mí. Debería ignorar/ignorar en cada nivel. – s3v3n

+0

Me pregunto si depende de la versión de git.Estoy usando 'git versión 1.7.4.1' –

+0

Tengo exactamente el mismo' $ git --version' 'git versión 1.7.4.1' – s3v3n

0
/** 
!/**/ 
!/app/design/frontend/default/theme_name/** 
!/skin/frontend/default/theme_name/** 

Explicación:

  1. ignoran todos los archivos y carpetas, de forma recursiva (nótese el doble asterisco).
  2. excluir todas las carpetas, de forma recursiva (GIT por diseño no se comprometerá carpetas vacías, las cuales se cuenta una carpeta llena de archivos ignorados como. Necesitamos esto para que los próximos dos excluye trabajan)
  3. excluir todos los archivos y carpetas, de forma recursiva , desde esta ubicación
  4. excluyen todos los archivos y carpetas, recursivamente, desde esta ubicación.

Normalmente hago esto en subcarpetas, así que no sé si la primera línea funcionará.

Cuestiones relacionadas