Enquanto trabalhamos no desenvolvimento de código é normal produzirmos arquivos temporários; baixarmos arquivos de pacotes, do tipo Nupackage; arquivos intermediários de compilação, que ficam na pasta ‘obj’ em uma solução .Net, por exemplo! Esses arquivos que, se não podemos dizer que são lixo, pelo menos não precisam serem versionados e eles também são recriados a qualquer momento.
Quando usamos o Git, é só adicionarmos estes arquivos no .gitignore que não iremos correr o risco de adicioná-los ao repositório, inadvertidamente. Mas… mesmo eles não sendo “trackeados” pelo controle de versão, e portanto não atrapalharem em um eventual commit, eles podem sujar o ambiente, ou simplesmente impedir um teste do tipo: os pacotes Nuget estão sendo baixados?
O que fazer? Clonar o repositório novamente? Procurar e apagar manualmente? Fazer um script para isso? Não, pois já temos a ferramenta para esse fim: o comando Clean!
Para que este comando apague pacotes Nuget é preciso que estes não estejam no repositório, portanto você deve ter o seguinte trecho no seu arquivo .gitignore:
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
!**/packages/repositories.config
Se você criou o arquivo com a versão 2015 do Visual Studio, conforme explicado no HOL – Getting Started with Git using Team Foundation Server 2013 esse trecho estará incluso, ou você pode baixar a versão mais recente aqui https://github.com/github/gitignore/blob/master/VisualStudio.gitignore, ou ainda montar através do https://www.gitignore.io/.
Fique atento para a última linha, ela estará comentada, é preciso retirar o caractere ‘#’, assim o arquivo repositories.config será preservado dentro da pasta packages. Isso também depende da estrtura do seu projeto.
Para testar
Crie uma aplicação Web
Pode ser do tipo Single Page Application
Se não tiver marcado o checkbox para criar a aplicação no controle de versão, vá no console e inicialize um repositório Git na raiz:
git ini
Adicione o arquivo .gitignore na raiz da pasta e faça o commit somente deste arquivo:
git add .gitignore
git commit –m “Adicionado arquivo ignore”
Faça a alteração comentada acima, se necessário… e adicione os arquivos restantes da solução, fazendo o commit em seguida.
Perceba na lista que os pacotes Nugets não são adicionados!
Faça um build da solution, e perceba que além dos pacotes Nuget, que foram baixados na criação da solução, você terá a pasta bin, com a dll do projeto e todas as outras referente aos pacotes.
O comando
Vamos saber mais sobre o comando Git Clean:
git clean –h
Como eu quero limpar todo o repositório, inclusive arquivos que não estão em tracking e também pastas, vou precisar utilizar as opções x e d e sempre bom utilizar o f para forçar o comando. É possível digitar junto!
git clean –fxd
Pronto… todos os arquivos que não estão no repositório foram apagados, a pasta bin e inclusive a pasta packages, já que o arquivo .config não está nela. Fazendo o build o Nuget irá baixar novamente os arquivos.
Emmanuel Brandão