Como já foi dito, para excluir do status, basta usar:
git status -uno # must be "-uno" , not "-u no"
Se você preferir ignorar permanentemente os arquivos não rastreados no momento, poderá, a partir da raiz do seu projeto, iniciar:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Toda chamada subseqüente git statusignorará explicitamente esses arquivos.
UPDATE : o comando acima tem uma pequena desvantagem: se você ainda não possui um .gitignorearquivo, seu gitignore irá se ignorar! Isso acontece porque o arquivo .gitignoreé criado antes da git status --porcelainexecução. Portanto, se você ainda não possui um .gitignorearquivo, recomendo usar:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Isso cria um subshell que é concluído antes da .gitignorecriação do arquivo.
EXPLICAÇÃO DO COMANDO Como estou recebendo muitos votos (obrigado!) Acho melhor explicar um pouco o comando:
git status --porcelainé usado em vez de git status --shortporque o manual declara "Forneça a saída em um formato fácil de analisar para scripts. Isso é semelhante à saída curta, mas permanecerá estável nas versões git e independentemente da configuração do usuário". Portanto, temos a parseabilidade e a estabilidade;
grep '^??'filtra apenas as linhas iniciadas por ??, as quais, de acordo com o manual de status do git , correspondem aos arquivos não rastreados;
cut -c4- remove os 3 primeiros caracteres de cada linha, o que fornece apenas o caminho relativo para o arquivo não rastreado;
- os
|símbolos são tubos , que passam a saída do comando anterior para a entrada do comando a seguir;
- os símbolos
>>e >são operadores de redirecionamento , que anexam a saída do comando anterior a um arquivo ou substituem / criam um novo arquivo, respectivamente.
Outra variante para aqueles que preferem usarsed em vez de grepe cut, aqui está uma outra maneira:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore