Removendo um repositório git de todos os arquivos confirmados que deveriam ter sido ignorados

2

Eu iniciei recentemente um repositório do git e esqueci de adicionar um arquivo .gitignore . Após o meu commit inicial, meu repositório tem muitos subdiretórios e muitos arquivos que deveriam ter sido ignorados. Existe uma maneira eficiente de adicionar um .gitignore e, em seguida, empurrar o repositório sem os arquivos que devem ser ignorados para uma ferramenta como o GitLab ou o GitHub?

    
por Brian Fitzpatrick 29.10.2018 / 19:34

1 resposta

1

Se você não se importar de excluir todos os arquivos ignorados no diretório de trabalho, os seguintes itens serão colocados em cena para todos os arquivos confirmados, mas ignorados:

find . -print0 | git check-ignore -z --stdin --no-index | xargs -0 git rm -f -r --cached --ignore-unmatch --

(assumindo o GNU find e um git para git check-ignore ). Ele também excluirá qualquer outro arquivo ou diretório ignorado.

Isso lista todos os arquivos e diretórios que começam no diretório atual, verifica se eles são ignorados (mesmo se eles estiverem confirmados) e os excluem, independentemente de estarem comprometidos, sem rastreamento, etc.

Isso funciona com qualquer arquivo .gitignore na árvore (ou mesmo em outro lugar na sua configuração git ).

Acompanhar comprometendo as alterações e empurrando-as; Como as alterações são um novo commit, você não precisará forçar nada. Reescrever o histórico para remover todas as referências a arquivos supostamente ignorados é uma tarefa um pouco mais complicada.

    
por 30.10.2018 / 10:10