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 status
ignorará explicitamente esses arquivos.
UPDATE : o comando acima tem uma pequena desvantagem: se você ainda não possui um .gitignore
arquivo, seu gitignore irá se ignorar! Isso acontece porque o arquivo .gitignore
é criado antes da git status --porcelain
execução. Portanto, se você ainda não possui um .gitignore
arquivo, recomendo usar:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Isso cria um subshell que é concluído antes da .gitignore
criaçã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 --short
porque 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 grep
e cut
, aqui está uma outra maneira:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore