Git no observa nuevas excepciones en .gitignore

Pregunta:

[ NOTA : Este no es el habitual "¡Git sigue rastreando archivos que acabo de agregar a .gitignore!" problema. Esto es lo contrario de eso.]

Tengo la estructura de directorios completa de un sitio web en un repositorio de Git. El CMS que uso viene por defecto con un archivo .gitignore:

# Ignore paths that contain user-generated content.
sites/*/files/
sites/*/private/

Tenga en cuenta que se excluyen todos los directorios de sitios / * / archivos. Pero de la forma en que hago mis sitios, hay una subcarpeta en particular que quiero que se incluya en el repositorio. Entonces, después de comenzar mi repositorio con el .gitignore anterior, lo modifiqué a esto:

# Ignore paths that contain user-generated content.
sites/*/files/
!sites/*/files/content/
!sites/*/files/content/*
sites/*/private/

Según tengo entendido, los patrones negados que agregué anteriormente deberían significar que los sitios / * / archivos / contenido / y su contenido ESTÁN incluidos en el repositorio, pero el resto de los sitios / * / archivos se ignoran. Y cuando recuerdo actualizar mi archivo .gitignore antes de hacer mi primera confirmación, funciona según lo planeado.

Pero cuando me olvido de actualizar el .gitignore hasta más tarde, como suelo hacer, no puedo hacer que Git agregue los nuevos archivos sin forzarlo a ignorar el archivo .gitignore por completo. Yo corro esto:

> git add sites/default/files/content/

Y recupera esto:

The following paths are ignored by one of your .gitignore files:
sites/default/files
Use -f if you really want to add them.
fatal: no files added

Sí, Git, ese directorio se ignora en la línea 2 del .gitignore, ¡pero las líneas 3 y 4 dicen que haga una excepción para la carpeta específica sobre la que le pregunté!

Soy consciente de que puedo usar -f para agregarlo directamente, pero luego tengo que hacerlo una y otra vez en cualquier compromiso futuro que agregue archivos a ese directorio.

Hay páginas todo sobre la web que hablan de cómo actualizar .gitignore Git no hace caso omiso de los archivos rastreados ya de por, pero no puedo encontrar nada de lo que habla de lo que no hace un seguimiento de los archivos de Git exceptuados recientemente.

Muchos lugares dicen que git update-index se puede usar para resolver problemas como este, pero parece que no puedo hacer que funcione para mí. Tiene alrededor de un millón de banderas posibles, así que tal vez no encontré la correcta (o una combinación de varias).

TL; DR : ¿Cómo puedo hacer que Git observe nuevas exclusiones en mi archivo .gitignore?

Respuesta:

Creo que esta respuesta lo explica mejor. La negación solo funciona para volver a incluir archivos que han sido ignorados explícitamente por otra regla. Cuando ignora un directorio adjunto, Git ni siquiera desciende a él y, por lo tanto, nunca ve, ni excluye explícitamente, su archivo.

La respuesta debajo de la anterior le brinda la solución: debe crear una o más reglas que construyan un conjunto de rutas que excluyan explícitamente todo lo que desea excluir, incluido su archivo, momento en el que puede negar la exclusión para él o cualquiera de sus que contienen directorios.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım