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 status
ignorará explícitamente esos archivos.
ACTUALIZACIÓN : el comando anterior tiene un inconveniente menor: si aún no tiene un .gitignore
archivo, ¡su gitignore se ignorará a sí mismo! Esto sucede porque el archivo .gitignore
se crea antes de que git status --porcelain
se ejecute. Entonces, si aún no tiene un .gitignore
archivo, 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 grep
y cut
, aquí hay otra forma:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore