Como ya se dijo, para excluir del estado solo use:
git status -uno # must be "-uno" , not "-u no"
Si, en cambio, desea ignorar permanentemente los archivos no rastreados actualmente, puede, desde la raíz de su proyecto, iniciar:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Cada llamada posterior a git statusignorará explícitamente esos archivos.
ACTUALIZACIÓN : el comando anterior tiene un inconveniente menor: si aún no tiene un .gitignorearchivo, ¡su gitignore se ignorará a sí mismo! Esto sucede porque el archivo .gitignorese crea antes de que git status --porcelainse ejecute. Entonces, si aún no tiene un .gitignorearchivo, le recomiendo usar:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Esto crea una subshell que se completa antes de.gitignore crear el archivo.
EXPLICACIÓN DE MANDO ya que recibo muchos votos (¡gracias!) Creo que es mejor que explique un poco el comando:
git status --porcelain se usa en lugar de git status --short porque el manual dice "Proporcione la salida en un formato fácil de analizar para los scripts. Esto es similar a la salida corta, pero se mantendrá estable en todas las versiones de git e independientemente de la configuración del usuario". Entonces tenemos tanto la capacidad de análisis como la estabilidad;
grep '^??' filtra solo las líneas que comienzan con ?? , que, de acuerdo con el manual de estado de git , corresponden a los archivos no rastreados;
cut -c4- elimina los primeros 3 caracteres de cada línea, lo que nos da solo la ruta relativa al archivo sin seguimiento;
- el
| símbolos son tuberías , que pasan la salida del comando anterior a la entrada del siguiente comando;
- los símbolos
>>y >son operadores de redireccionamiento , que agregan la salida del comando anterior a un archivo o sobrescribe / crea un nuevo archivo, respectivamente.
OTRA VARIANTE para aquellos que prefieren usar ensed lugar de grepy cut, aquí hay otra forma:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore