¿Cómo se hace que Git ignore archivos sin usar .gitignore?
Debido a extrañas limitaciones externas, no puedo modificar el contenido .gitignore
de mi repositorio. ¿Existe alguna forma de ignorar archivos y directorios además de modificar un archivo .gitignore
? Incluso si es una solución global como una configuración global que se aplicará a todos mis repositorios.
Si puedes modificar .git/info/exclude
puedes poner las mismas reglas allí. Pero ese archivo se encuentra únicamente en su repositorio local.
No olvidemos, según gitignore , que existe un orden de precedencia en las diferentes "fuentes de patrones de ignorar" que Git considera:
- Los patrones se leen desde la línea de comando para aquellos comandos que los admiten.
- Los patrones se leen desde un archivo .gitignore en el mismo directorio que la ruta, o en cualquier directorio principal, y los patrones en los archivos de nivel superior (hasta la raíz) son anulados por aquellos en archivos de nivel inferior hasta el directorio que contiene el archivo.
- Patrones leídos de
$GIT_DIR/info/exclude
. - Patrones leídos del archivo especificado por la variable de configuración
core.excludesfile
.
Los dos últimos pueden ser una solución a tu problema pero:
- no se replican para un repositorio distante
- sus patrones pueden ser anulados por otras fuentes
(Ver también esta pregunta SO )
Las otras dos soluciones implican actualizar el índice ( git update-index
):
git update-index --assume-unchanged
: consulte " Git: desrastrear un archivo solo en el repositorio local y conservarlo en el repositorio remoto ". Elijah Lynn
lo menciona en los comentarios .- Incluso puedes ignorar el contenido de una carpeta: "
git update-index --assume-unchanged
en el directorio ". - Úselo
--no-assume-unchange
para revertir el efecto: consulte "¿ Es posiblegit add
un archivo actualmente protegido porassume-unchanged
? ".
- Incluso puedes ignorar el contenido de una carpeta: "
Sin embargo, cuando compra otra sucursal o cuando compra git pull
, es posible que se restablezca el estado de "ignorar". De ahí la otra opción:
git update-index --skip-worktree
; ver:- " ignorar mis cambios en archivos pero no eliminarlos del representante remoto " y
- " Preservar archivos git --assume-unchanged entre pagos de sucursales ".
La diferencia entre los dos se explica en " Git: diferencia entre ' assume-unchanged
' y ' skip-worktree
' ".