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

Posted

技术标签:

【中文标题】.gitignore 用于 Visual Studio 项目和解决方案【英文标题】:.gitignore for Visual Studio Projects and Solutions 【发布时间】:2011-01-09 18:43:03 【问题描述】:

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

【问题讨论】:

相关问题:***.com/questions/72298/… Hg 还有一个关于此的主题:***.com/questions/34784/…。不知道该配置是否可以直接转移到 git。 我会小心忽略 .exe 和 .pdb,您可能会无意中忽略随源存储的工具(nant、nunit gui 等)。 @murki - 看起来这就是答案:coderjournal.com/2011/12/… 签入.sln 文件后,我们会得到-# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 等噪声差异,这可以避免吗? 【参考方案1】:

见官方 GitHub 的"Collection of useful .gitignore templates"。

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

【讨论】:

请注意。此文件包含一个忽略已发布文件的条目。无论规则的编写方式如何,它都会忽略您称为“发布”的任何文件夹,因此会忽略您在它下面的任何内容。它并不专门针对 Visual Studio“发布”输出。它会忽略它,但也会忽略其他东西。 @starfighterxyz 如果您认为 gitignore 中存在错误,我建议您创建一个拉取请求。 好吧,我不知道(够吗?)说它是一个错误。我只是碰巧使用 Publish/ 作为控制器名称和项目文件夹名称。我认为这只是一个边缘案例。只是为了挽救你几个小时的生命:) 知道为什么 Windows 特定文件(如 Thumbs.db 和 Desktop.ini)未在上述链接的文件中列出吗? @Learner 因为它们在不同的文件中。您应该将这些添加到您的个人全局 gitignore 中,而不是签入。github.com/github/gitignore/tree/master/Global【参考方案2】:

这应该取决于您使用的项目或语言。因此,与构建、vs 文件夹、sln 文件、bin 文件夹等相关的扩展将被包括在内。有关 git 忽略文件的完整列表,您可以查看此 repo gitignore for visual studio

【讨论】:

【参考方案3】:

使用 Visual Studio 添加 .gitignore

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

上面将打开 Visual Studio 的选项,并选择 Source Control > Git Global Settings。从左侧的列表中选择 Git Repository Settings,然后点击 Ignore fileAdd 按钮。

上面将添加一个 .gitignore 文件,其中所有正确的文件都被忽略,对于典型的 Visual Studio 设置。

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

【讨论】:

【参考方案4】:

您可以通过转到团队资源管理器中的设置视图,然后选择存储库设置来为您的存储库创建或编辑 .gitignore 文件。为您的 .gitignore 选择编辑。

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

更多信息请看here。

【讨论】:

【参考方案5】:

某些项目可能希望将*.manifest 添加到他们的visual studio gitignore.io file。

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

见“Manifest Generation in Visual Studio”

但如果您已生成它们并且它们是静态的(不随时间变化),那么最好将它们从 .gitignore 文件中删除。

这就是像 Git for Windows 这样的项目刚刚所做的(​​对于 Git 2.24,2019 年第四季度)

参见Johannes Schindelin (dscho) 的commit aac6ff7(2019 年 9 月 5 日)。(由 Junio C Hamano -- gitster -- 合并于 commit 59438be,2019 年 9 月 30 日)

.gitignore:停止忽略 .manifest 文件

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

至少 一些 Visual Studio 版本会自动生成 .manifest 文件 当没有明确指定时,因此我们曾经要求 Git 忽略它们。

但是,我们现在确实有一个漂亮的 .manifest 文件:compat/win32/git.manifest,所以 Visual Studio 也不会为我们自动生成清单,我们也不希望 Git 再忽略 .manifest 文件。

【讨论】:

【参考方案6】:

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

这会将两个文件添加到您的源文件夹中。

    .git 属性 .gitignore

这是最简单的方法。

【讨论】:

如何在 Visual Studio 中查看这些文件?它们在解决方案文件夹中创建,但在解决方案资源管理器中不可见 嗯,他们在团队资源管理器 -> 存储库设置中。 i.imgur.com/haYgl8D.png 可以直接在解决方案资源管理器中看到吗?【参考方案7】:

在 Visual Studio 2015 Team Explorer > Local Git Repositories > Project > Settings > Git > Repository Settings > Ignore & Attribute Files。您可以添加 .gitignore 文件,其中默认情况下在 Visual Studio 解决方案中应忽略项目。

【讨论】:

【参考方案8】:

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

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

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

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

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

完成!

【讨论】:

【参考方案9】:

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

【讨论】:

我喜欢这个部分:Backup &amp; report files from converting an old project file to a newer Visual Studio version. Backup files are not needed, because we have git ;-)【参考方案10】:

有一个在线工具可以让你根据你的操作系统、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

【讨论】:

理想情况下,它会在文件中包含一个许可证。 (理想情况下,这将是一个在企业环境中不会引起任何问题的许可证。) 另外,这应该有.vs/,见这里:***.com/a/31879242/1143274【参考方案11】:

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

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

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

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

【讨论】:

实际上,git 也匹配相对于子目录的模式,除非您以“/”开头,在这种情况下,它们只匹配与 .gitignore 文件相同的目录中的内容。跨度> 【参考方案12】:

对于那些对 Microsoft 认为应该包含在 gitignore 中的内容感兴趣的人,以下是 Visual Studio 2013 RTM 在创建新 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

见:Add a default .gitignore file on MSDN

【讨论】:

【参考方案13】:

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

美丽。

【讨论】:

【参考方案14】:

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

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

【讨论】:

最新版本不需要显式unignore nuget.exe @tofutim,最新版本是什么? git 本身?【参考方案15】:

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

【讨论】:

【参考方案16】:

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

#NuGet
packages/

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

【讨论】:

有人愿意详细说明您为什么要排除 packages 文件夹吗?包含构建服务器的包以具有依赖项是否有意义? 值得注意的是,NuGet 团队针对这个问题实施了“包还原”功能。 NuGet 站点上有一个 document,它解释了该功能并描述了如何在 Visual Studio 中使用它。 如果您忽略包并使用 nuget 包还原,允许 nuget.exe 会很有帮助。当有人下载​​时,这有助于 VS 告诉解决方案已启用该功能:!NuGet.exe 对于那些使用 AppHarbor 的人,值得注意的是,排除 packages 文件夹会导致您的构建部署失败:)【参考方案17】:

我更喜欢根据需要排除事物。您不希望shotgun 排除名称中带有字符串“bin”或“obj”的所有内容。 至少一定要跟在斜线后面。

这是我在 VS2010 项目中的开始:

bin/
obj/
*.suo
*.user

而且仅仅因为我使用 ReSharper,还有这个:

_ReSharper*

【讨论】:

同意。此外,这适用于“调试”。添加尾部斜杠以避免忽略名称中带有调试的文件。【参考方案18】:

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

这是我们用于 VS2010 C# 项目的 .gitignore,使用 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
~$*

【讨论】:

我在这里引用 James Gregory 的评论:“我会小心忽略 .exe 和 .pdb,您可能会无意中忽略随源存储的工具(nant、nunit gui 等)。 – James Gregory 2010 年 5 月 21 日 13:32" 不同意*.resharper。与*.ReSharper.user 匹配的文件应该被忽略,但上面的*.user 规则可以满足这一要求。 只是澄清一下 - 它实际上是回到了 InstallShield,它在 VisualStudio 安装程序之前就已经存在,至少早在 1998 年就已经存在了!【参考方案19】:

这是我的.gitignore 文件的what I use in my .NET Projects。

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

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

【讨论】:

【参考方案20】:

感谢Jens Lehmann for this one - 如果您将源目录与编译器项目文件分开并构建输出,您可以通过否定它来简化您的 .gitignore:

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

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

【讨论】:

我不知道.gitignore中有一个否定标志。有用的提示!【参考方案21】:

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

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

也许这个问题应该是 Community Wiki,所以我们可以和 cmets 一起编辑一份关于哪些文件应该忽略哪些类型的项目的主列表?

【讨论】:

查看 James Gregory 对另一个答案的评论:“我会小心忽略 .exe 和 .pdb,您可能会无意中忽略随源存储的工具(nant、nunit gui 等...) .- James Gregory 2010 年 5 月 21 日 13:32" @JimRaden 一般来说,最好避免将二进制工具签入 Git。最佳实践是仅将您的源代码签入 Git;如果您需要二进制工具,请包含用于安装它们的脚本或仅包含这些工具的子模块。【参考方案22】:

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

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

【讨论】:

不同意*.resharper。与*.ReSharper.user 匹配的文件应该被忽略,但上面的*.user 规则可以满足这一要求。 @DrewNoakes:您认为应该对哪些 ReSharper 文件进行修订控制? @PerLundberg 值得考虑的一个原因是您可以配置标准项目格式选项等,并将配置文件与项目一起保存。如果这是在 git 中,那么使用 Resharper 的每个人都可以更轻松地保持项目格式一致。

以上是关于.gitignore 用于 Visual Studio 项目和解决方案的主要内容,如果未能解决你的问题,请参考以下文章

VS2019下载

Visual Studio .suo 和 .dll?

如何离线安装Visual Studio 2017

推荐 .gitignore 用于 react-native

.gitignore 用于 Xcode 项目

.gitignore 不适用于忽略文件夹的子文件夹