git - tag - ¿Ignorando los contenidos de un directorio ya registrado?
que es git log (5)
Este comando hará que git desestime su directorio y todos los archivos que se encuentran debajo de él sin eliminarlos:
git rm -r --cached <your directory>
La opción -r
provoca la eliminación de todos los archivos en su directorio.
La opción --cached
hace que los archivos solo se eliminen del índice de git, no su copia de trabajo. Por defecto, git rm <file>
eliminaría <file>
.
Tengo un repositorio de git que se usa solo para guardar gráficos y archivos de sonido utilizados en varios proyectos. Están todos en un directorio sin subdirectorios. Ahora acabo de crear un script para copiar estos recursos de otro directorio estructurado, con varios niveles de subdirectorios.
Ahora solo quiero que la estructura de archivos jerárquica (de origen) sea rastreada por git, y el directorio plano (de destino) (con todos los archivos en una pila) debe ignorarse.
He agregado el directorio de destino a .gitignore, pero git todavía está rastreando los cambios en él. Pensé que si cometía la eliminación del archivo antiguo en el directorio de destino, git podría dejar de rastrear los nuevos contenidos (copiados en el script), pero no lo hace.
¿Cómo hago que git se olvide del directorio de destino?
No estoy seguro de si esto cuenta o me hace una mala persona, pero aquí va.
- Agregué
*Generated*
al archivo raíz .gitignore - Envié los archivos que quiero mantener como GeneratedFile.Whatever.ext. CheckedIn
- Hice un gancho de git en el pago y envío para llamar a un script de powershell haciendo esto:
dir *.CheckedIn -Recurse | %{ copy $_.FullName "$($_.FullName)".Replace("CheckedIn","") -EA SilentlyContinue}
Me siento un poco mal conmigo mismo ... pero de hecho funciona.
Ok, parece que primero debes hacer un check-in con el directorio completamente vacío (ni archivos antiguos ni nuevos), y cualquier archivo agregado después se ignorará. Si elimina los archivos antiguos agregados y los nuevos antes de confirmar, los nuevos se agregarán al repositorio, aunque se deben ignorar.
Al menos, esto me funcionó en esta situación. Aún sería genial si alguien pudiera proporcionar más información sobre lo que está sucediendo.
Para un subdirectorio llamado blah/
added to git, ambos de los siguientes parecen funcionar para ignorar los archivos nuevos en blah/
. Añadido a .gitignore:
blah
blah/*
Si necesita tener un archivo rastreado (registrado), pero no desea rastrear más cambios de un archivo mientras lo mantiene en su repositorio local, así como en el repositorio remoto, esto se puede hacer con:
git update-index --assume-unchanged path/to/file.txt
Después de eso, cualquier cambio en este archivo ya no aparecerá en el git status
.