Deja de rastrear un file en git, sin tener que eliminarlo localmente o al tirar

Quiero ignorar un tree de files / directorys que se rastreó anteriormente, ignórelo para siempre pero no se lo elimina en un jalón, simplemente ignóralo en el repository donde ocurrió la extracción. Es posible ? ¿Por qué no (si no)? Cómo debo proceder ?

NB: la respuesta aceptada en Eliminar un file de un repository de Git sin eliminarlo del sistema de files local , es decir, git rm --cached path – dará como resultado que el file se elimine en una extracción. Asqueroso. No solo eso, sino que "borrará tu file si revisas una revisión antes de la eliminación y luego verifica una revisión después de la eliminación" (consulta este comentario ). Consulta esta pregunta para ver otros comentarios / respuestas interesantes que no abordan mi problema sin embargo.

Soy perfectamente consciente de la bandera --assume-unchanged pero esto no es lo que quiero – Quiero decirle a git (y a todos los clones del repository) "hey, deja de rastrear este file / tree" pero no "borra este file / tree" "- así que quiero – --assume-unchanged todo el mundo por así --assume-unchanged . Si no es posible (¿por qué?) Necesito una solución .

Para el logging, estoy tratando de arrancar git para usarlo para mantener / compartir el historial y quiero poder detener el seguimiento de files / directorys a voluntad, sin tener que eliminarlos .

Relacionado:

  • git assume-unvolved vs skip-worktree – el consejo general para asumir-sin cambios debe tomarse con un grano de sal (al tirar, restablecer -hard etc.)
  • git asumir sin cambios vs skip worktree – ignorando un enlace simbólico – ver esta respuesta para core.sparseCheckout

Esto no es posible. Para evitar el seguimiento de nuevos cambios, debe eliminar el file del repository (utilizando git rm o git rm --cached ). Esto agrega un cambio a la confirmación que elimina el file. Cuando ese cambio se aplica en otros repositorys, se lleva a cabo la acción de eliminación, lo que provoca que se elimine el file.

Tuve el mismo problema, utilicé git rm --cached <file> y funcionó localmente, pero una vez que hice un push en el server remoto borré también los files, y no quería eso. Luego encontré git update-index --assume-unchanged <file> e ignora los cambios locales y no lo elimina del server remoto, funcionó como un hechizo!