.gitignore para projetos e soluções do Visual Studio

Quais arquivos devo include no .gitignore ao usar o Git em conjunto com o Visual Studio Solutions ( .sln ) e Projetos?

Veja a coleção oficial de templates úteis do GitHub do GitHub.

O .gitignore para o Visual Studio pode ser encontrado aqui:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Existe uma ferramenta on-line que permite gerar arquivos .gitignore baseados em seu sistema operacional, IDE, idioma, etc. Veja http://www.gitignore.io/ .

insira a descrição da imagem aqui

Em 20/08/2014, aqui está o arquivo gerado para o Visual Studio + Windows.

 # Created by http://www.gitignore.io ### VisualStudio ### ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.sln.docstates # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ build/ bld/ [Bb]in/ [Oo]bj/ # Roslyn cache directories *.ide/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* #NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf *.cachefile # Visual Studio profiler *.psess *.vsp *.vspx # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding addin-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch _NCrunch_* .*crunch*.local.xml # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # 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/ # If using the old MSBuild-Integrated Package Restore, uncomment this: #!**/packages/repositories.config # Windows Azure Build Output csx/ *.build.csdef # Windows Store app package directory AppPackages/ # Others sql/ *.Cache ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview *.pfx *.publishsettings node_modules/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ ### Windows ### # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msm *.msp 

Eu uso o seguinte .gitignore para projetos C #. Padrões adicionais são adicionados como e quando são necessários.

 [Oo]bj [Bb]in *.user *.suo *.[Cc]ache *.bak *.ncb *.log *.DS_Store [Tt]humbs.db _ReSharper.* *.resharper Ankh.NoLoad 

Para aqueles interessados ​​no que a Microsoft acha que deve ser incluído no gitignore, aqui está o padrão que o Visual Studio 2013 RTM gera automaticamente ao criar um novo Git-Repository:

 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.sln.docstates # Build results [Dd]ebug/ [Rr]elease/ x64/ build/ [Bb]in/ [Oo]bj/ # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets !packages/*/build/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* *_i.c *_p.c *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.log *.scc # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf *.cachefile # Visual Studio profiler *.psess *.vsp *.vspx # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch *.ncrunch* .*crunch*.local.xml # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.Publish.xml # NuGet Packages Directory ## TODO: If you have NuGet Package Restore enabled, uncomment the next line #packages/ # Windows Azure Build Output csx *.build.csdef # Windows Store app package directory AppPackages/ # Others sql/ *.Cache ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.[Pp]ublish.xml *.pfx *.publishsettings # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file to a newer # Visual Studio version. Backup files are not needed, because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files App_Data/*.mdf App_Data/*.ldf #LightSwitch generated files GeneratedArtifacts/ _Pvt_Extensions/ ModelManifest.xml # ========================= # Windows detritus # ========================= # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Mac desktop service store files .DS_Store 

Consulte: Adicionar um arquivo .gitignore padrão no MSDN

Enquanto você deve manter seu arquivo NuGet packages.config, você deve excluir a pasta packages:

 #NuGet packages/ 

Eu normalmente não armazeno binários, ou qualquer coisa gerada da minha fonte, no controle de origem. Existem opiniões diferentes sobre isso no entanto. Se isso facilitar as coisas para o seu sistema de compilation, faça! No entanto, eu diria que você não está testando essas dependencies, então elas ocuparão espaço no seu repository. Armazenar os binários em um local central e depois confiar no arquivo packages.config para indicar qual versão é necessária é uma solução melhor, na minha opinião.

Eu prefiro excluir as coisas conforme a necessidade. Você não quer espingarda excluir tudo com a string “bin” ou “obj” no nome. Pelo menos não se esqueça de seguir aqueles com uma barra.

Aqui está o que eu começo com um projeto VS2010:

 bin/ obj/ *.suo *.user 

E só porque eu uso ReSharper, também esta:

 _ReSharper* 

No Visual Studio 2015 Atualização 3, e com a extensão do Git atualizada a partir de hoje (2016-10-24), o .gitignore gerado pelo Visual Studio é:

 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ [Xx]64/ [Xx]86/ [Bb]uild/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # DNX project.lock.json artifacts/ *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db # Visual Studio profiler *.psess *.vsp *.vspx *.sap # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Un-comment the next line if you do not want to checkin # your web deploy settings because they may include unencrypted # passwords #*.pubxml *.publishproj # 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 # NuGet v3's project.json files produces more ignoreable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Microsoft Azure ApplicationInsights config file ApplicationInsights.config # Windows Store app package directory AppPackages/ BundleArtifacts/ # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview *.pfx *.publishsettings node_modules/ orleans.codegen.cs # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # LightSwitch generated files GeneratedArtifacts/ ModelManifest.xml # Paket dependency manager .paket/paket.exe # FAKE - F# Make .fake/ 

Adicionado InstallShield ignora para a implantação de compilation. O InstallShield é a nova direção que a Microsoft está tomando sobre o Visual Studio Installer, portanto, começamos a usá-lo em todos os novos projetos. Esta linha adicionada remove os arquivos de instalação do SingleImage. Outros tipos de InstallShield podem include distribuição de DVD entre outros. Você pode adicionar esses nomes de diretórios ou apenas [Ee] xpress / para impedir que qualquer arquivo de implantação do InstallShield LE entre no repository.

Aqui está o nosso .gitignore para projetos VS2010 C # usando o Install Shield LE com implementações SingleImage para o instalador:

 #OS junk files [Tt]humbs.db *.DS_Store #Visual Studio files *.[Oo]bj *.exe *.pdb *.user *.aps *.pch *.vspscc *.vssscc *_i.c *_p.c *.ncb *.suo *.tlb *.tlh *.bak *.[Cc]ache *.ilk *.log *.lib *.sbr *.sdf ipch/ obj/ [Bb]in [Dd]ebug*/ [Rr]elease*/ Ankh.NoLoad #InstallShield [Ss]ingle[Ii]mage/ [Dd][Vv][Dd]-5/ [Ii]nterm/ #Tooling _ReSharper*/ *.resharper [Tt]est[Rr]esult* #Project files [Bb]uild/ #Subversion files .svn # Office Temp Files ~$* 

Aqui está um extrato de um .gitignore em um projeto recente no qual eu estava trabalhando. Eu extraí os que eu acredito que estão relacionados ao Visual Studio, incluindo as saídas de compilation; é um projeto multi-plataforma, então existem várias outras regras de ignorar para arquivos produzidos por outros sistemas de compilation, e eu não posso garantir que eu as separasse exatamente.

 *.dll *.exe *.exp *.ilk *.lib *.ncb *.log *.pdb *.vcproj.*.user [Dd]ebug [Rr]elease 

Talvez essa questão deva ser Community Wiki, para que todos possamos editar juntos uma lista principal com comentários sobre quais arquivos devem ser ignorados para quais tipos de projeto?

Agradecemos a Jens Lehmann por este – se você mantiver os diretórios de origem separados para os arquivos de projeto do seu compilador e construir a saída, você poderia simplificar o seu .gitignore negando-o:

 path/to/build/directory/* !*.sln !*.vcproj 

Você não diz qual (is) idioma (s) você está usando, mas o acima deve funcionar para projetos C ++.

Tarde para a festa aqui, mas eu também acho que eu uso o seguinte. Alguns só podem ser úteis para ocultar arquivos confidenciais ao enviar para um controle remoto público .

 #Ignore email files delivered to specified pickup directory *.eml #Allow NuGet.exe (do not ignore) !NuGet.exe #Ignore WebDeploy publish profiles *.Publish.xml #Ignore Azure build csdef & Pubxml files ServiceDefinition.build.csdef *.azurePubxml #Allow ReSharper .DotSettings (for non-namespace-provider properties) !*.csproj.DotSettings #Ignore private folder /Private/ 

Eu sei que este é um segmento antigo, mas para os novos e os antigos que visitam esta página, existe um site chamado gitignore.io que pode gerar esses arquivos. Pesquise “visualstudio” ao aterrissar no site e ele irá gerar esses arquivos para você, também você pode ter vários idiomas / ides ignorar arquivos concatenados no documento único.

Bonita.

Se você estiver usando um dbproj em sua solução, você desejará adicionar o seguinte:

 #Visual Studio DB Project *.dbmdl [Ss]ql/ 

Fonte: http://blogs.msdn.com/b/bahill/archive/2009/07/31/come-visit-revisit-the-beer-house-continuous-integration.aspx

Há um atalho no Visual Studio, porque ele suporta o Git fora da checkbox em 2015 ou acima. Para novas soluções (ou algumas que não possuem a pasta .git ), use os resources de controle de origem no Solution Explorer :

Clique com o botão direito em sua solução e selecione Add Solution to Source Control... no menu pop-up.

Ele inicializa automaticamente o repository .gitignore , adiciona .gitignore com as coisas necessárias à sua solução e até mesmo o arquivo .gitattributes (terminações de linha, etc.).

O texto aparecerá no console do VS:

 A new Git repository has been created for you in C:\ Commit ______ created locally in repository. 

Feito!

Aqui está o que eu uso em meus projetos .NET para o meu arquivo .gitignore .

 [Oo]bj/ [Bb]in/ *.suo *.user /TestResults *.vspscc *.vssscc 

Isso é praticamente uma abordagem de todos os MS, que usa o testador do Visual Studio interno e um projeto que pode ter algumas ligações do TFS lá também.

Como mencionado por outro pôster, o Visual Studio gera isso como parte de seu .gitignore (pelo menos para o MVC 4):

 # SQL Server files App_Data/*.mdf App_Data/*.ldf 

Como o seu projeto pode ser uma subpasta de sua solução, e o arquivo .gitignore é armazenado na raiz da solução, isso não afetará os arquivos do database local (o Git os vê em projectfolder/App_Data/*.mdf ). Para explicar isso, eu mudei essas linhas assim:

 # SQL Server files *App_Data/*.mdf *App_Data/*.ldf 

No Visual Studio 2015 Team Explorer> Repositórios Locais de Git> Projeto> Configurações> Git> Configurações do Repositório> Ignorar e Atributo de Arquivos. Você pode adicionar o arquivo .gitignore com itens que devem ser ignorados nas soluções do Visual Studio por padrão. insira a descrição da imagem aqui

insira a descrição da imagem aqui