gitignore depois de cometer

Eu tenho um repository git hospedado no Github. Depois de confirmar muitos arquivos, estou percebendo que preciso criar .gitignore e excluir arquivos .exe , .obj .

No entanto, removerá automaticamente esses arquivos confirmados do repository? Existe alguma maneira de forçar isso?

Não, você não pode forçar a remoção de um arquivo que já está comprometido no .gitignore apenas porque ele é adicionado ao .gitignore

Você tem que git rm --cached para remover os arquivos que você não quer no repo. (–cached desde que você provavelmente quer manter a cópia local, mas remover do repo). Então, se você quiser remover todos os exe do seu repo fazer

 git rm --cached /\*.exe 

(Observe que o asterisco * é citado do shell – isso permite ao git, e não ao shell, expandir os nomes de caminho dos arquivos e subdiretórios)

No entanto, removerá automaticamente esses arquivos confirmados do repository?

Não. Mesmo com um .gitignore existente, você pode organizar arquivos “ignorados” com o sinalizador -f (force). Se os arquivos já tiverem sido enviados, eles não serão removidos automaticamente.

 git rm --cached path/to/ignored.exe 

Eu tive que remover pastas .idea e target e depois de ler todos os comentários, isso funcionou para mim:

 git rm -r .idea git rm -r target git commit -m 'removed .idea folder' 

e depois empurre para master

Se você não empurrou as alterações já:

 git rm -r --cached . git add . git commit -m 'clear git cache' git push 

No entanto, removerá automaticamente esses arquivos confirmados do repository?

Não.

A receita ‘melhor’ para fazer isso é usar o git filter-branch como escrito aqui:

A página man do git-filter-branch contém exemplos abrangentes.

Nota Você estará reescrevendo a história. Se você tivesse publicado alguma revisão contendo os arquivos acidentalmente adicionados, isso poderia criar problemas para os usuários dessas ramificações públicas. Informe-os, ou talvez pense no quanto você precisa remover os arquivos.

Nota Na presença de tags, sempre use a opção --tag-name-filter cat para git filter-branch . Nunca dói e você vai economizar a dor de cabeça quando você percebe mais tarde que você precisava

Mesmo depois de excluir o (s) arquivo (s) e, em seguida, confirmar, você ainda terá esses arquivos no histórico. Para excluí-los, considere usar o Repo-Cleaner do BFG . É uma alternativa ao git-filter-branch.