.gitignore для проектов и решений Visual Studio

Какие файлы следует включать в .gitignore при использовании Git совместно с решениями Visual Studio (.sln) и проектами?

Ответ 2

Имеется интерактивный инструмент, который позволяет вам генерировать .gitignore файл на основе вашей ОС, IDE, языка и т.д. Посмотрите http://www.gitignore.io/.

enter image description here

На 8/20/2014 здесь создается файл, созданный для 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

Ответ 3

Я использую следующие .gitignore для проектов С#. Дополнительные шаблоны добавляются по мере необходимости.

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

Ответ 4

Для тех, кто заинтересован в том, что 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

Смотрите: Добавить файл .gitignore по умолчанию в MSDN

Ответ 5

Пока вы должны хранить файл NuGet package.config, вы должны исключить папку пакетов:

#NuGet
packages/

Обычно я не храню двоичные файлы или что-либо, созданное из моего источника, в контроле источника. Однако есть разные мнения по этому поводу. Если это упростит вашу систему сборки, сделайте это! Однако я бы сказал, что вы не управляете версиями этих зависимостей, поэтому они просто занимают место в вашем репозитории. Сохранение двоичных файлов в центральном месте, а затем полагаться на файл packages.config, чтобы указать, какая версия необходима, является лучшим решением, на мой взгляд.

Ответ 6

Я предпочитаю исключать вещи по мере необходимости. Вы не хотите, чтобы дробовик исключил все с строкой "bin" или "obj" в названии. По крайней мере, обязательно следуйте за косой чертой.

Вот что я начинаю с проекта VS2010:

bin/
obj/
*.suo
*.user

И только потому, что я использую ReSharper, также это:

_ReSharper*

Ответ 7

В Visual Studio 2015 Update 3 и с расширением Git, обновленным с сегодняшнего дня (2016-10-24), .gitignore, сгенерированный 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 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 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/

Ответ 8

Добавлена ​​опция InstallShield для развертывания сборки. InstallShield - это новое направление, которое Microsoft возглавляет над установщиком Visual Studio, поэтому мы начали использовать его во всех новых проектах. Эта добавленная строка удаляет установочные файлы SingleImage. Другие типы InstallShield могут включать распространение DVD среди других. Возможно, вы захотите добавить эти имена каталогов или просто [Ee] xpress/, чтобы предотвратить попадание файлов развертывания InstallShield LE в репо.

Вот наши .gitignore для VS2010 проектов С#, используя 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
~$*

Ответ 9

Я понимаю, что это старый вопрос, по-прежнему делиться информацией. В Visual Studio 2017 вы можете просто щелкнуть правой кнопкой мыши файл решения и выбрать Добавить решение в систему контроля версий

enter image description here

Это добавит два файла в вашу исходную папку.

  1. .gitattributes
  2. .gitignore

Это самый простой способ.

Ответ 10

В Visual Studio 2015 Team Explorer> Локальные репозитории Git> Проект> Настройки> Git> Настройки репозитория> Игнорировать и файлы атрибутов. Вы можете добавить файл.gitignore с элементами, которые по умолчанию должны игнорироваться в визуальных студийных решениях. enter image description here

enter image description here

Ответ 11

Здесь выдержка из .gitignore в недавнем проекте, над которым я работал. Я извлек те, которые, как я полагаю, связаны с Visual Studio, включая результаты компиляции; это кросс-платформенный проект, поэтому существуют различные другие правила игнорирования файлов, созданных другими системами сборки, и я не могу гарантировать, что я их точно отделяю.

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

Возможно, этот вопрос должен быть Community Wiki, поэтому мы можем редактировать вместе один главный список с комментариями о том, какие файлы следует игнорировать для каких типов проектов?

Ответ 12

Кредит Jens Lehmann для этого - если вы держите исходные каталоги отдельно от ваших файлов проекта компилятора и создаете выходные данные, вы можете упростить свой .gitignore, отрицая это:

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

Вы не говорите, какой язык вы используете, но выше должны работать для проектов на С++.

Ответ 13

Поздно к вечеринке здесь, но я также обнаружил, что использую следующее. Некоторые могут быть полезны только для скрытия конфиденциальных файлов при нажатии на открытый пульт.

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

Ответ 14

Я знаю, что это старый поток, но для новых и старых, которые посещают эту страницу, есть веб-сайт под названием gitignore.io, который могут генерировать эти файлы. Поиск "visualstudio" при посадке на веб-сайт, и он будет генерировать эти файлы для вас, также вы можете иметь несколько языков /ides игнорировать файлы, объединенные в один документ.

Красивая.

Ответ 16

В Visual Studio есть ярлык, поскольку он поддерживает Git из коробки в 2015 или выше. Для новых решений (или у некоторых, у которых нет папки .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.

Готово!

Ответ 17

Вот что я использую в своих .NET-проектах для моего файла .gitignore.

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

Это почти весь подход MS, который использует встроенный тестер Visual Studio и проект, который также может иметь некоторые привязки TFS.

Ответ 18

Как упоминалось еще одним плакатом, 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

Ответ 19

Некоторые проекты могут захотеть добавить *.manifest в файл Visual Studio gitignore.io.

Это связано с тем, что некоторые свойства проектов Visual Studio для новых проектов настроены на создание файла манифеста.

Смотрите "Генерация манифеста в Visual Studio"

Но если вы сгенерировали их, и они статичны (не меняются с течением времени), рекомендуется удалить их из файла .gitignore.

Именно это и сделал проект, подобный Git для Windows (для Git 2.24, четвертый квартал 2019 года)

См. коммит aac6ff7 (05 сентября 2019 г.) от Йоханнеса Шинделина (dscho).
(Merged by Junio C Hamano -- [TG44] -- in commit 59438be, 30 Sep 2019)

.gitignore: прекратить игнорировать файлы .manifest

В Windows можно добавить дополнительные метаданные в исполняемый файл, связав его с "манифестом", то есть с документом XML, который описывает возможности и требования (например, минимальная или максимальная версия Windows).
Предполагается, что эти XML-документы будут храниться в файлах .manifest.

По крайней мере, некоторые версии Visual Studio автоматически генерируют файлы .manifest когда ни один не указан явно, поэтому мы обычно просили Git игнорируйте их.

Однако сейчас у нас есть красивый файл .manifest: compat/win32/git.manifest, поэтому Visual Studio не генерирует для нас и автоматическую генерацию манифеста, и мы не хотим, чтобы Git больше игнорировал файлы .manifest.