. gitignore用于Visual Studio项目和解决方案

当将gitVisual Studio解决方案(.sln)和项目结合使用时,我应该在.gitignore中包含哪些文件?

541851 次浏览

我将以下. gitignore用于C#项目。在需要时添加其他模式。

[Oo]bj[Bb]in*.user*.suo*.[Cc]ache*.bak*.ncb*.log*.DS_Store[Tt]humbs.db_ReSharper.**.resharperAnkh.NoLoad

这是我最近工作的一个项目的.gitignore摘录。我已经提取了我认为与Visual Studio相关的内容,包括编译输出;这是一个跨平台项目,因此对于其他构建系统生成的文件有各种其他忽略规则,我不能保证我准确地将它们分开了。

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

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

归功于Jens Lehmann为这个-如果您将源目录与编译器项目文件和构建输出分开,您可以通过否定它来简化. gitignore:

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

您没有说明您使用的是哪种语言,但上述内容应该适用于C++项目。

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

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

这几乎是一种全MS方法,它使用内置的Visual Studio测试器,以及一个可能在其中也有一些TFS绑定的项目。

添加的InstallShield忽略了构建部署。InstallShield是Microsoft超越Visual Studio Installer的新方向,因此我们已开始在所有新项目中使用它。添加的这一行删除了SingleImage安装文件。其他InstallShield类型可能包括DVD分发等。您可能希望添加这些目录名称或仅[Ee]xpress/以防止任何InstallShield LE部署文件进入存储库。

这是我们的. gitignore for VS2010 C#项目,使用Install Shield LE with 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*.sdfipch/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~$*

虽然您应该保留NuGetpackages.config文件,但您应该排除包文件夹:

#NuGetpackages/

我通常不会在源代码控制中存储二进制文件或从我的源代码生成的任何东西。然而,对此有不同的意见。如果它使你的构建系统更容易,那就去做吧!然而,我认为你没有对这些依赖项进行版本控制,所以它们只会占用存储库中的空间。在我看来,将二进制文件存储在一个中心位置,然后依靠packages.config文件来指示需要哪个版本是一个更好的解决方案。

我更喜欢根据需要排除一些东西。您不想排除名称中带有字符串“bin”或“obj”的所有内容。至少一定要跟在带斜杠的后面。

以下是我从VS2010项目开始的内容:

bin/obj/*.suo*.user

只是因为我使用ReSharper,还有这个:

_ReSharper*

查看官方GitHub的"有用的. gitignore模板的集合"

Visual Studio的.gitignore可以在这里找到:
https://github.com/github/gitignore/blob/main/VisualStudio.gitignore

如果在解决方案中使用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

这里的聚会迟到了,但我也发现我使用了以下内容。有些可能仅用于推送到公共远程时隐藏敏感文件。

#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 filesServiceDefinition.build.csdef*.azurePubxml
#Allow ReSharper .DotSettings (for non-namespace-provider properties)!*.csproj.DotSettings
#Ignore private folder/Private/

我知道这是一个旧的线程,但对于访问此页面的新老用户来说,有一个名为gitignore.io的网站可以生成这些文件。登陆网站后搜索“Visual Studio”,它会为您生成这些文件,您也可以将多种语言/ide忽略文件连接到一个文档中。

太美了。

对于那些对微软认为应该包含在gitignore中的内容感兴趣的人,这是#0在创建新的Git-Reposaku时自动生成的默认值:

## 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 filesipch/*.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-inDocProject/buildhelp/DocProject/Help/*.HxTDocProject/Help/*.HxCDocProject/Help/*.hhcDocProject/Help/*.hhkDocProject/Help/*.hhpDocProject/Help/Html2DocProject/Help/html
# Click-Once directorypublish/
# Publish Web Output*.Publish.xml
# NuGet Packages Directory## TODO: If you have NuGet Package Restore enabled, uncomment the next line#packages/
# Windows Azure Build Outputcsx*.build.csdef
# Windows Store app package directoryAppPackages/
# Otherssql/*.CacheClientBin/[Ss]tyle[Cc]op.*~$**~*.dbmdl*.[Pp]ublish.xml*.pfx*.publishsettings
# RIA/Silverlight projectsGenerated_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*.XMLUpgradeLog*.htm
# SQL Server filesApp_Data/*.mdfApp_Data/*.ldf

#LightSwitch generated filesGeneratedArtifacts/_Pvt_Extensions/ModelManifest.xml
# =========================# Windows detritus# =========================
# Windows image file cachesThumbs.dbehthumbs.db
# Folder config fileDesktop.ini
# Recycle Bin used on file shares$RECYCLE.BIN/
# Mac desktop service store files.DS_Store

见:在MSDN上添加默认的. gitignore文件

正如另一个海报所提到的,Visual Studio将其作为其. gitignore的一部分生成(至少对于MVC 4):

# SQL Server filesApp_Data/*.mdfApp_Data/*.ldf

由于您的项目可能是解决方案的子文件夹,并且. gitignore文件存储在解决方案根目录中,因此这实际上不会触及本地数据库文件(Git在projectfolder/App_Data/*.mdf看到它们)。为了解决这个问题,我将这些行更改为:

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

有一个在线工具允许您根据您的操作系统、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.xmlTestResult.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 filesipch/*.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-inDocProject/buildhelp/DocProject/Help/*.HxTDocProject/Help/*.HxCDocProject/Help/*.hhcDocProject/Help/*.hhkDocProject/Help/*.hhpDocProject/Help/Html2DocProject/Help/html
# Click-Once directorypublish/
# 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 Outputcsx/*.build.csdef
# Windows Store app package directoryAppPackages/
# Otherssql/*.CacheClientBin/[Ss]tyle[Cc]op.*~$**~*.dbmdl*.dbproj.schemaview*.pfx*.publishsettingsnode_modules/
# RIA/Silverlight projectsGenerated_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*.XMLUpgradeLog*.htm
# SQL Server files*.mdf*.ldf
# Business Intelligence projects*.rdl.data*.bim.layout*.bim_*.settings
# Microsoft FakesFakesAssemblies/

### Windows #### Windows image file cachesThumbs.dbehthumbs.db
# Folder config fileDesktop.ini
# Recycle Bin used on file shares$RECYCLE.BIN/
# Windows Installer files*.cab*.msi*.msm*.msp

在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.xmlTestResult.xml
# Build Results of an ATL Project[Dd]ebugPS/[Rr]eleasePS/dlldata.c
# DNXproject.lock.jsonartifacts/
*_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 filesipch/*.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.xmlnCrunchTemp_*
# MightyMoose*.mm.*AutoTest.Net/
# Web workbench (sass).sass-cache/
# Installshield output folder[Ee]xpress/
# DocProject is a documentation generator add-inDocProject/buildhelp/DocProject/Help/*.HxTDocProject/Help/*.HxCDocProject/Help/*.hhcDocProject/Help/*.hhkDocProject/Help/*.hhpDocProject/Help/Html2DocProject/Help/html
# Click-Once directorypublish/
# 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 Outputcsx/*.build.csdef
# Microsoft Azure Emulatorecf/rcf/
# Microsoft Azure ApplicationInsights config fileApplicationInsights.config
# Windows Store app package directoryAppPackages/BundleArtifacts/
# Visual Studio cache files# files ending in .cache can be ignored*.[Cc]ache# but keep track of directories ending in .cache!*.[Cc]ache/
# OthersClientBin/[Ss]tyle[Cc]op.*~$**~*.dbmdl*.dbproj.schemaview*.pfx*.publishsettingsnode_modules/orleans.codegen.cs
# RIA/Silverlight projectsGenerated_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*.XMLUpgradeLog*.htm
# SQL Server files*.mdf*.ldf
# Business Intelligence projects*.rdl.data*.bim.layout*.bim_*.settings
# Microsoft FakesFakesAssemblies/
# 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 filesGeneratedArtifacts/ModelManifest.xml
# Paket dependency manager.paket/paket.exe
# FAKE - F# Make.fake/

Visual Studio中有一个快捷方式,因为它在2015年或更高版本中支持开箱即用的Git。对于新的解决方案(或一些没有.git文件夹的解决方案),请使用解决方案资源管理器中的源代码控制功能:

右键单击在您的解决方案中,并在弹出菜单中选择Add Solution to Source Control...项。

它会自动初始化.git存储库,将.gitignore与必要的东西添加到您的解决方案中,甚至添加.gitattributes文件(行结尾等)。

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

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

成交!

在Visual Studio 2015 Team Explorer中>本地Git存储库>项目>设置>Git>存储库设置>忽略和属性文件。输入图片描述

在此处输入图片描述

我知道这是一个老问题,仍在共享信息。在Visual Studio 2017中,您只需右键单击解决方案文件并选择将解决方案添加到源代码控制

在此处输入图片描述

这将向您的源文件夹添加两个文件。

  1. . git属性
  2. . gitignore

这是最简单的方法。

有些项目可能希望将*.manifest添加到他们的Visual Studio#1文件

这是因为新项目的一些 Visual Studio项目属性设置为生成清单文件。

见“在Visual Studio中生成清单

但是,如果您已经生成了它们并且它们是静态的(不会随着时间的推移而改变),那么将它们从.gitignore文件中删除是一个好主意。

这就是像git for windows这样的项目刚刚做的事情(对于Git 2.24,2019年第四季度)

提交aac6ff7(2019年9月5日)byJohannes Schindelin(#0)
(由Junio C Hamano----#0----合并于提交59438be,30 Sep 2019)

.gitignore:停止忽略.manifest文件

在Windows上,可以通过链接“清单”将其他元数据嵌入到可执行文件中,即描述功能和要求(例如最小或最大Windows版本)的XML文档。这些XML文档预计将存储在.manifest文件中。

至少一些个Visual Studio版本自动生成.manifest个文件当没有明确指定时,因此我们过去常常要求Git别理他们

但是,我们现在确实有一个漂亮的.manifest文件:#1,因此Visual Studio不会为我们自动生成清单,也不希望Git再忽略.manifest文件。

您可以通过转到Team Explorer中的设置视图,然后选择存储库设置来为您的存储库创建或编辑您的. gitignore文件。为您的. gitignore选择编辑。

它会自动创建过滤器,忽略所有VS特定的构建目录等。

在此处输入图片描述

更多信息请看这里

使用Visual Studio添加. gitignore

打开Visual Studio和需要忽略文件的解决方案。从顶部菜单中选择Git>设置。

在此处输入图片描述

上面的操作将打开Visual Studio的选项,选择源代码控制>Git全局设置。从左侧的列表中选择Git仓库设置,然后单击忽略文件添加按钮。

在此处输入图片描述

上面将添加(和提交阶段)一个. gitignore文件,对于典型的Visual Studio设置,忽略所有适当的文件。

https://elanderson.net/2020/10/add-git-ignore-to-an-existing-visual-studio-solution-new-git-experience/

请注意,如果您的repo根目录中已经有一个. gitignore文件,则“添加”按钮会改为“编辑”,按下该按钮只会打开文件而不会更新它,这不是很有帮助。在这种情况下,您可以首先重命名. gitignore文件,单击添加按钮,取消新的. gitignore文件,然后按照您的意愿合并保存的副本更改。

它应该取决于您使用的项目或语言。因此,将包括与构建、vs文件夹、sln文件、bin文件夹等相关的扩展。有关git忽略文件的完整列表,您可以检查此存储库视觉工作室Gitignore