Git Incluyendo una subcarpeta anidada arbitrariamente cuando su padre ha sido excluido en .gitignore

3 minutos de lectura

avatar de usuario
mickey puri

Excluyo una carpeta a y sus subcarpetas, pero quiero incluir una subcarpeta b específica, donde b puede ser una subcarpeta en algún lugar debajo de a, y no se ha especificado la ruta exacta a b.

Mi .gitignore contiene estas lineas:

a/**
!a/**/b

sin embargo, esto no funciona. He intentado muchas otras permutaciones de lo anterior, incluso de otras publicaciones sobre el desbordamiento de la pila, pero nada parece funcionar.

La pregunta anterior sobre stackoverflow se ocupa de la situación en la que puede declarar explícitamente la ruta al subdirectorio. En esta pregunta, la situación a la que me refiero es donde b puede ser cualquier subcarpeta debajo ay no un camino predeterminado.

Además, la solución anterior requiere que “designores” todos los directorios principales de todo lo que quieras “designorar”. Sin embargo, en este caso estoy tratando de crear una regla genérica que permita este subdirectorio sin preocuparme de dónde está en el árbol de directorios. Entonces, la solución anterior no funciona/no se aplica en esta situación.

  • Para comodidad de todos, ¿podría agregar un enlace a la otra pregunta de la que está hablando?

    –Oliver Charlesworth

    30 de diciembre de 2013 a las 12:34

  • Esta pregunta es un duplicado porque simplemente hay no es mejor solución, no hay alternativa. Puede hacer lo que se publicó allí o no se puede hacer, sin importar cuántas veces haga la misma pregunta.

    – janos

    30 de diciembre de 2013 a las 12:44

  • @OliCharlesworth Buen punto, aquí hay un enlace a la otra pregunta, que es diferente ya que la subcarpeta tiene una ruta específica en lugar de ser genérica stackoverflow.com/questions/5533050/…

    – Mickey Puri

    30 de diciembre de 2013 a las 14:40


  • @Janos, la otra pregunta, como ya he señalado, es diferente. Sin preguntar cómo voy a saber que lo que pido “no se puede hacer”. Por lo que he estado leyendo, pensé que era posible pero no pude hacerlo funcionar, el tuyo es el primero que escuché que no es posible.

    – Mickey Puri

    30 de diciembre de 2013 a las 14:43


  • @janos Al menos según mis definiciones de las palabras involucradas, “no hay mejor solución” no es lo mismo que “pregunta duplicada”…

    – twalberg

    30 de diciembre de 2013 a las 15:39

avatar de usuario
michas

Si le dices a git que ignore un directorio, ignorará por completo todo lo que esté dentro de ese directorio. Esto significa que git no puede coincidir con su exclusión porque git simplemente no lo está mirando.

La única forma de usar exclusiones de manera significativa es para un solo directorio, donde ignora todo menos algunas carpetas como esta:

/some/path/*
!/some/path/foo

Esto ignorará todas las entradas pero foo directamente debajo /some/path.

Pero, la mayoría de las veces, es mucho más claro simplemente ignorar cosas explícitamente que usar exclusiones.

  • Sí, pero no escala a ninguna ruta, como se sugiere en stackoverflow.com/a/9604395/6309: lo acabo de probar en Windows con git1.8.4

    – VoC

    30 de diciembre de 2013 a las 13:23

  • Me refería: No funciona, al menos en Windows con 1.8.4. ‘**/*‘ ignorará todo, incluso con una regla de negación justo después.

    – VoC

    30 de diciembre de 2013 a las 13:43


  • Y no funciona porque no es posible volver a incluir un archivo si se excluye un directorio principal de ese archivo, como mencioné antes en stackoverflow.com/a/20652768/6309.

    – VoC

    30 de diciembre de 2013 a las 15:49

avatar de usuario
D. Ben Knoble

Intente agregar los archivos manualmente (generalmente esto tiene prioridad sobre .gitignore-reglas de estilo):

git add /path/to/module

Usted puede incluso querer el -N intención de agregar bandera, para sugerirte voluntad agregarlos, pero no inmediatamente. A menudo hago esto para archivos nuevos que aún no estoy listo para preparar.


Esta es una copia de una respuesta publicada a un duplicado de esta pregunta. Lo vuelvo a publicar aquí para aumentar la visibilidad; me resulta más fácil no tener un lío de reglas de gitignore.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad