¿Por qué git elimina files ignorados en `directory / *` pero no en `directory /`

Como se menciona en esta publicación

Para decirlo de otra manera, si tiene lo siguiente en su .gitignore:

/my-ignonetworking-directory/* 

Entonces estás jodido: después de save un git, -u, my-ignonetworking-file.txt desaparecerá (y lo siento, tampoco está en el alijo que acabas de crear). Divide los packages de recuperación y espera lo mejor. Alternativamente, si tiene lo siguiente en su .gitignore:

 /my-ignonetworking-directory 

Entonces estás dorado, no te preocupes, relájate, relájate, my-ignonetworking-file.txt se mantendrá exactamente donde estaba antes del escondite de git, excepto -u.

¿Por qué esta diferencia? También me pregunto si no se eliminarán files si en mi file .gitignore tengo /my-ignonetworking-directory/ (con barra diagonal)?

Los resultados de ambos ejemplos serán los mismos, los files ignorados desaparecerán. Por supuesto, hay una solución para que se describa en la documentation:

Si se utiliza la opción –include-untracked, todos los files sin seguimiento también se guardan y se limpian con git clean, dejando el directory de trabajo en un estado muy limpio. Si se utiliza la opción –todos, los files ignorados se esconden y se limpian además de los files sin seguimiento.

Git internamente llama a git clean -d para poner el directory de trabajo en un estado muy limpio .

El command que quieres es:

 git stash --include-untracked --all