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

2016-01-11 03_03_17-New Project

Pode ser do tipo Single Page Application

2016-01-11 03_04_25-New ASP.NET Project - WebApplication

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

2016-01-11 03_13_18-posh~git ~ GitClean [master]

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”

2016-01-11 03_14_27-posh~git ~ GitClean [master]

Faça a alteração comentada acima, se necessário… e adicione os arquivos restantes da solução, fazendo o commit em seguida.

2016-01-11 03_17_27-posh~git ~ GitClean [master]

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.

2016-01-11 03_22_46-Greenshot

O comando

Vamos saber mais sobre o comando Git Clean:

git clean –h

2016-01-11 03_19_31-posh~git ~ GitClean [master]

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

2016-01-11 03_31_18-posh~git ~ GitClean [master]

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