Visual Studio项目和解决scheme的.gitignore

将Git与Visual Studio Solutions( .sln )和Projects结合使用时,应将哪些文件包含在.gitignore

查看官方GitHub的“有用的.gitignore模板的集合” 。

Visual Studio的.gitignore可以在这里find:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

有一个在线工具,它允许您根据您的操作系统,IDE,语言等生成.gitignore文件。请看http://www.gitignore.io/

在这里输入图像描述

在2014年8月20日,这里是为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 

我为C#项目使用以下.gitignore。 额外的模式会在需要的时候添加。

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

对于那些对微软认为应该包含在gitignore中感兴趣的人来说,下面是Visual Studio 2013 RTM在创build新的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 

请参阅: 在MSDN上添加一个默认的.gitignore文件

虽然你应该保持你的NuGet packages.config文件,你应该排除软件包文件夹:

 #NuGet packages/ 

我通常不会在源代码控制中存储二进制文件或源代码中生成的任何内容。 然而对此却有不同的看法。 如果它让你的构build系统变得更容易,那就做吧! 然而,我会说,你不是版本化这些依赖,所以他们只会占用你的仓库空间。 将二进制文件存储在一个中央位置,然后依靠packages.config文件来指示需要哪个版本是一个更好的解决scheme,在我看来。

我更喜欢根据需要排除事情。 你不想用名字中的“bin”或“obj”这个string来排除一切。 至less一定要跟着那些斜线。

以下是VS2010项目的开始:

 bin/ obj/ *.suo *.user 

只因为我使用ReSharper,也是这样的:

 _ReSharper* 

为构build部署添加了InstallShield忽略。 InstallShield是微软领先于Visual Studio Installer的新方向,因此我们已经开始在所有新项目中使用它。 这个添加的行删除了SingleImage安装文件。 其他InstallShieldtypes可能包括DVD分配等。 您可能需要添加这些目录名称,或者只是[Ee] xpress /以防止任何InstallShield LE部署文件进入回购站。

这里是我们的.gitignore的VS2010 C#项目使用Install Shield LE与SingleImage部署的安装程序:

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

在Visual Studio 2015 Update 3上,并且从今天(2016-10-24)更新了Git扩展,由Visual Studio生成的.gitignore是:

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

下面是我正在研究的最近一个项目中.gitignore的摘录。 我已经提取了我认为与Visual Studio相关的那些,包括编译输出; 这是一个跨平台的项目,所以其他构build系统生成的文件还有其他各种忽略规则,我不能保证我将它们完全分开。

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

也许这个问题应该是社区维基,所以我们可以一起编辑一个主列表,注释哪些文件应该忽略哪些types的项目?

感谢Jens Lehmann,如果您将源代码目录与您的编译器项目文件分开并生成输出,您可以通过否定它来简化您的.gitignore:

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

你不会说你正在使用什么语言,但是上面的代码应该适用于C ++项目。

晚会到了这里,但是我也发现我用了以下。 有些可能仅用于在推送到公共远程时隐藏敏感文件。

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

我知道这是一个古老的线程,但对于访问此页面的新老用户,有一个名为gitignore.io的网站可以生成这些文件。 登陆网站后search“visualstudio”,它会为你生成这些文件,也可以将多个语言/ ides忽略文件连接成一个文件。

美丽。

如果您在解决scheme中使用dbproj,则需要添加以下内容:

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

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

在Visual Studio中有一个快捷方式 ,因为它支持2015年或更高版本的Git。 对于新的解决scheme(或者没有.git文件夹的解决scheme ),请使用解决scheme资源pipe理器中的源代码pipe理.git

右键单击您的解决scheme并selectAdd Solution to Source Control...项目在popup菜单中。

它会自动初始化.git存储库,为需要的东西添加.gitignore ,甚至是.gitattributes文件(行结尾等)。

文本将出现在VS控制台中:

 A new Git repository has been created for you in C:\<path to your solution> Commit ______ created locally in repository. 

完成!

这是我在.NET项目中为我的.gitignore文件使用的内容。

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

这几乎是所有的MS方法,它使用内置的Visual Studiotesting器,也可能有一些TFS绑定的项目。

正如另一张海报所提到的,Visual Studio将其作为它的.gitignore的一部分(至less对于MVC 4来说):

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

由于您的项目可能是您的解决scheme的子文件夹,并且.gitignore文件存储在解决scheme根目录中,所以这实际上不会触及本地数据库文件(Git在projectfolder/App_Data/*.mdf处看到它们)。 为了解释这一点,我改变了这样的行:

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