Gitignore won't ignore .vs folder for Visual Studio 2015 RC on Windows7/8

WindowsGitDirectoryGitignoreVisual Studio-2015

Windows Problem Overview


We've tried all sorts of explicit and wildcard entries in .gitignore however items in the hidden .vs/ folder as a part of Visual Studio 2015 RC keep getting committed.

Since those are individual settings for developers, they are obviously always different and show up in a git diff.

Are there any hacks out there to ignore everything in the top-level .vs/ folder in the repo?

Windows Solutions


Solution 1 - Windows

Follow the steps below, the issue will be solved.

Step 1: Add following content to the file .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/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# 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

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

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# 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/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components 
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# 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

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

Step 2: Make sure above operation take effect

If the issue still exists, that's because settings in .gitignore can only ignore files that were originally not tracked. If some files have already been included in the version control system, then modifying .gitignore is invalid. To solve this issue completely, you need to open Git Bash running following commands in the repository root folder.

$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'

Certainly, you can also use Package Manager Console of Visual Studio to do the things in Step 2. Use PM console Then the issue will be completely solved.

Solution 2 - Windows

If they are showing up in a git diff, then the files are already being tracked, whereas .gitignore only affects files that are untracked. You will need to remove the files from source control with git rm --cached, and then .gitignore will affect them.

Note that when you do this, other developers will have their files deleted locally when they do their next git pull. So before doing so, they may want to make a backup of those files.

Solution 3 - Windows

In our case, the .vs directory had been added to source control when I initialized the repository. Thus, the line in .gitignore:

/.vs

didn't do anything until I deleted the directory and checked in the changes (similar to what TPoschel is saying above, but with the difference that checking in the deleted directory is what fixed it, as I had already checked in the .gitignore file).

Solution 4 - Windows

It works this way for me: open your git ignore file and add the following to the list:

> .vs/

Solution 5 - Windows

I ran into this issue and I found an easy way of fixing the "git tracking the files already" thing.

  1. Backup all the relevant files in your git folder on your PC to a seperate location (normally something like c:/user/source/repos if you didn't specify someplacec else).

  2. Delete all the relevant files in the git folder.

  3. Open Visual Studio and push this delete to the server.

  4. Paste all the files back in.

  5. Push this to the server.

This should be an easy way of getting rid of all those temporary files and anything else you specified on your .gitignore for your online git folder that it's already tracking.

Solution 6 - Windows

I ran into this issue prior to committing anything to my repository. I erroneously thought that just having the .gitignore file in the directory would prevent VS from recognizing the files as 'Changes'. You have to first commit the .gitignore file before git will start ignoring the files specified within it.

Solution 7 - Windows

This answer is similar to ones above but, details actual steps when a valid .gitignore file is inplace, yet items have been checked into the branch and they appear in the origin repository.

  1. If the .vs directory has been checked in verify nothing in the current branch has been staged from the directory. If so, un-stage them.

  2. Go to the level of the directory which has .vs.

  3. Run this command: git rm --cached -r .vs.

  4. At this point you should see the files under the .vs directory as slated for deletion.

  5. Stage and create the commit.

  6. Push the commit to origin.

Solution 8 - Windows

I usually add .vs at start, when repo is clean. but I can confirm git obeys to:

.vs

in .gitignore.

And as other says, remove locally and then commit/push.

Solution 9 - Windows

I have come across posts talking about having to delete or alter in some way the commit history in order to get the .gitignore file into the branch and more importantly having the contents honored by git to not include matches in what should be tracked.

When using Visual Studio 2022 all that is needed is to right-click the .vs folder in the Git-Changes menu and select the option Ignore these local items

enter image description here

After this the .gitignore is created and added to the next commit and whichever item you selected is now dropped from subsequent commits.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser5015546View Question on Stackoverflow
Solution 1 - WindowsBravo YeungView Answer on Stackoverflow
Solution 2 - WindowsDavid DeutschView Answer on Stackoverflow
Solution 3 - WindowsChaim EliyahView Answer on Stackoverflow
Solution 4 - WindowsBenView Answer on Stackoverflow
Solution 5 - WindowsFabiavillView Answer on Stackoverflow
Solution 6 - WindowsTPoschelView Answer on Stackoverflow
Solution 7 - WindowsΩmegaManView Answer on Stackoverflow
Solution 8 - WindowsingcontiView Answer on Stackoverflow
Solution 9 - WindowstijkoView Answer on Stackoverflow