.gitignore per progetti e soluzioni di Visual Studio

Quali file dovrei includere in .gitignore quando si utilizza Git in combinazione con Visual Studio Solutions ( .sln ) e Progetti?

Vedi la “Collezione di modelli utili .gitignore ” ufficiali di GitHub.

Il .gitignore per Visual Studio può essere trovato qui:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

C’è uno strumento online che ti consente di generare file .gitignore basati sul tuo sistema operativo, IDE, lingua, ecc. Dai un’occhiata a http://www.gitignore.io/ .

inserisci la descrizione dell'immagine qui

Il 20/08/2014, ecco il file che viene generato per 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 

Io uso il seguente .gitignore per i progetti C #. Modelli aggiuntivi vengono aggiunti come e quando sono necessari.

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

Per chi è interessato a ciò che Microsoft pensa dovrebbe essere incluso nel gitignore, ecco quello predefinito che Visual Studio 2013 RTM genera automaticamente durante la creazione di un nuovo 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 

Vedi: aggiungi un file .gitignore predefinito su MSDN

Mentre si dovrebbe conservare il file packages.config di NuGet, è necessario escludere la cartella dei pacchetti:

 #NuGet packages/ 

Generalmente non memorizzo i binari, o qualsiasi cosa generata dalla mia fonte, nel controllo del codice sorgente. Ci sono opinioni diverse su questo tuttavia. Se rende le cose più facili per il tuo sistema di build, fallo! Tuttavia, direi che non stai facendo il versioning di queste dipendenze, quindi occuperanno solo spazio nel tuo repository. Memorizzare i binari in una posizione centrale, quindi fare affidamento sul file packages.config per indicare quale versione è necessaria è una soluzione migliore, secondo me.

Preferisco escludere le cose in base alle necessità. Non si vuole fucilare escludere tutto con la stringa “bin” o “obj” nel nome. Per lo meno assicurati di seguire quelli con una barra.

Ecco cosa inizio con un progetto VS2010:

 bin/ obj/ *.suo *.user 

E solo perché io uso ReSharper, anche questo:

 _ReSharper* 

Nell’aggiornamento 3 di Visual Studio 2015 e con l’estensione Git aggiornata a oggi (24-10-2016), il file .gitignore generato da 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/ 

Aggiunto InstallShield ignora per la distribuzione di build. InstallShield è la nuova direzione in cui Microsoft è diretto su Visual Studio Installer, quindi abbiamo iniziato a utilizzarlo su tutti i nuovi progetti. Questa riga aggiunta rimuove i file di installazione di SingleImage. Altri tipi di InstallShield possono includere la distribuzione di DVD, tra gli altri. Potresti voler aggiungere quei nomi di directory o solo [Ee] xpress / per impedire che i file di installazione di InstallShield LE entrino nel repository.

Ecco il nostro .gitignore per i progetti VS2010 C # che utilizzano Install Shield LE con le distribuzioni SingleImage per l’installer:

 #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 ~$* 

Ecco un estratto da un .gitignore su un progetto recente su cui stavo lavorando. Ho estratto quelli che credo siano legati a Visual Studio, inclusi gli output di compilazione; è un progetto multipiattaforma, quindi ci sono varie altre regole di ignorare per i file prodotti da altri sistemi di build, e non posso garantire che li ho separati esattamente.

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

Forse questa domanda dovrebbe essere Community Wiki, quindi possiamo tutti modificare insieme una lista principale con commenti su quali file dovrebbero essere ignorati per quali tipi di progetti?

Ringraziamo Jens Lehmann per questo : se tenete le directory di origine separate dai file di progetto del compilatore e generate l’output, potete semplificare il vostro .gitignore negandolo:

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

Non si dice quale lingua si sta utilizzando, ma quanto sopra dovrebbe funzionare per i progetti C ++.

In ritardo alla festa qui, ma trovo anche che io uso il seguente. Alcuni potrebbero essere utili solo per hide i file sensibili quando si preme su un telecomando pubblico .

 #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/ 

So che questo è un thread vecchio, ma per i nuovi e i vecchi che visitano questa pagina, esiste un sito Web chiamato gitignore.io che può generare questi file. Cerca “visualstudio” al momento dell’atterraggio sul sito web e genererà questi file per te, inoltre puoi avere più lingue / id ignorare i file concatenati nell’unico documento.

Bellissimo.

Se si sta utilizzando un dbproj nella soluzione, si desidera aggiungere quanto segue:

 #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

C’è un collegamento in Visual Studio, perché supporta Git out of the box nel 2015 o sopra. Per le nuove soluzioni (o alcune che non hanno la cartella .git ) usa le funzionalità di controllo del codice sorgente in Esplora soluzioni :

Fai clic con il tasto destro del mouse sulla soluzione e seleziona Add Solution to Source Control... del codice Add Solution to Source Control... nel menu popup.

Inizializza automaticamente il repository .git , aggiunge .gitignore con le cose necessarie alla tua soluzione e persino file .gitattributes (line endings, ecc.).

Il testo apparirà nella console VS:

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

Fatto!

Ecco cosa uso nei miei progetti .NET per il mio file .gitignore .

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

Questo è praticamente un approccio MS, che utilizza il tester di Visual Studio integrato e un progetto che potrebbe avere anche alcuni binding TFS.

Come menzionato da un altro poster, Visual Studio lo genera come parte del suo .gitignore (almeno per MVC 4):

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

Poiché il tuo progetto potrebbe essere una sottocartella della tua soluzione e il file .gitignore è memorizzato nella root della soluzione, in realtà questo non toccherà i file del database locale (Git li vedrà su projectfolder/App_Data/*.mdf di projectfolder/App_Data/*.mdf ). Per tener conto di ciò, ho modificato le righe in questo modo:

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

In Esploratore team di Visual Studio 2015> Repository Git locali> Progetto> Impostazioni> Git> Impostazioni repository> Ignora e file attributo. È ansible aggiungere file .gitignore con elementi che devono essere ignorati nelle soluzioni di Visual Studio per impostazione predefinita. inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui