Git Ignore no funciona, no lo entiendo

Pensé que había descubierto esto, pero en bashs recientes está fallando.

Necesito enviar un file y luego, después de la confirmación, ignorarlo en las confirmaciones de repos posteriores.

Digamos que el file es example.txt.

Confirmo cambios en example.txt y los envío a github.

Luego touch .gitignore y agrego example.txt a él y lo touch .gitignore .
Luego uso git rm --cached example.txt
Luego, git add .gitignore para confirmar -> empujarlo

El problema en este paso es que un estado de git muestra example.txt como eliminado y, por lo tanto, la confirmación / inserción lo elimina del repository remoto.

He intentado varias variaciones para crear un .gitignore y un rm --cached , y eliminó el file o no lo ignora y confirma los cambios no deseados.

Buscando información sobre el process exacto para ignorar los files ya comprometidos sin eliminarlos.

Te das count de que git rm --cached example.txt eliminará el file del índice y lo mantendrá solo en el directory de trabajo. Y luego, cuando se compromete, está cometiendo la eliminación del file, además del file .gitignore que agregó. Por lo tanto, cuando presione el file, se eliminará del repository.

Además, no puede ignorar los cambios en un file rastreado usando gitignore. En su lugar, puede intentar hacer git update-index --assume-unchanged example.txt para "ignorar" el file.

Un posible enfoque es decirle a Git que asum que el file no ha cambiado.

 $ mkdir project $ cd project $ touch example.txt $ git init $ git add . $ git commit -m "checkin..." $ git update-index --assume-unchanged example.txt $ echo "hello" >> example.txt $ git status # On branch master nothing to commit (working directory clean) $ 

Confía en que es lo que quieres. Tenga en count que este enfoque tiene sus defectos, especialmente si intenta cambiar a una twig donde la versión de example.txt es diferente de lo que está en el maestro.