revertir - ignorar cambios git
Problemas para ignorar los archivos previamente ignorados en el repositorio de Git (4)
Tengo un sitio que tiene un directorio /sites/default/files/
donde generalmente se guarda el contenido del usuario. Suponiendo que no necesito hacer un seguimiento de esto, agregué / sites / default / files / a mi archivo .gitignore.
Luego descubrí que también quería mantener algunas cargas mayormente permanentes en ese directorio también. Ahora tiene más sentido rastrear todo en / sites / default / files / y excluir subdirectorios indeseables, en lugar de hacerlo al revés.
El problema es que Git no dejará de ignorar ese directorio. He eliminado las líneas de .gitignore que especifican este directorio y no lo rastrearán. Tengo la opción de usar git add /sites/default/files/ -f
para forzar a git a rastrear el directorio, pero lo he hecho antes y parece desordenado.
Si .gitignore ya no especifica ese directorio como ignorado, ¿por qué tendría que forzar a Git para que comience a rastrear esos archivos?
No creo que J-16 sea correcto. De http://www.kernel.org/pub/software/scm/git/docs/git-add.html :
El comando git add no agregará archivos ignorados por defecto. Si cualquier archivo ignorado se especificó explícitamente en la línea de comando, git add fallará con una lista de archivos ignorados. Los archivos ignorados alcanzados por recursión de directorio o globbing de nombre de archivo realizados por Git (cita tus globos antes del shell) se ignorarán en silencio. El comando git add se puede usar para agregar archivos ignorados con la opción -f (forzar).
git add -f
parece ser solo para agregar un archivo que existe en un archivo de ignorar en alguna parte.
Quizás haya otro archivo .gitignore en / sites o / sites / default que también indique a Git que ignore este directorio, o tal vez se haya configurado en .git / info / exclude?
Para la posteridad: la respuesta a mi problema fue "solo mire más de cerca".
@twalberg señaló, correctamente, que podría haber una regla que estaba pasando por alto en el archivo .gitignore. La manera en cascada en la que se aplican las reglas .gitignore hace que sea más fácil excluir los archivos de forma más amplia de lo previsto.
Por lo que puedo decir, las suposiciones que estaba haciendo sobre cómo funciona Git eran correctas. De manera similar, mi caso no parece apoyar (ni refutar) los comentarios de @J-16 SDiZ sobre qué rol puede assume-unchanged
bit de assume-unchanged
.
Tuvimos un problema muy similar en nuestro directorio de sitios de Drupal. El problema es que la distribución de Drupal tiene un archivo .gitignore en el directorio de nivel superior de Drupal que coincide con cualquier cosa en drupal / sites / files / *
Ya sabes cómo hacerlo. Sí, git add -f
es el camino.
Si preguntas por qué ... esto es porque git estableció un bit de assume-unchanged
internamente. Este bit hace que git piense que el archivo no está modificado, por lo que git add
no lo agregará.
Si quiere meterse con los detalles de la implementación, puede usar el comando git update-index --no-assume-unchanged <file>
.