Gitignore 不会忽略 Windows7/8上 Visual Studio 2015 RC 的.vs 文件夹

中尝试了各种显式和通配符条目。但是,在隐藏的项目。Vs/文件夹作为 VisualStudio2015RC 的一部分不断得到提交。

由于这些都是开发人员的个人设置,因此它们显然总是不同的,并显示在 git diff 中。

有没有什么技巧可以忽略回购中顶级.vs/文件夹中的所有内容?

81655 次浏览

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.

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.

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).

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.

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

.vs/

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.

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.

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.

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.

How to hide the ".vs" folder in Visual Studio from Git

  1. Make sure your Git repo has a .git and .gitignore folder and file.

  2. In the .gitignore file add the following lines with your Git project name to make sure your .vs folder is ignored:

    .vs/
{yourgitprojectname}/.vs
  1. Delete the ".vs" folder. Be sure to leave the ".git" folder intact. Realize when you do this you remove the Git-to-VisualStudio project connection, but your Git repo still exists.

  2. In the lower right corner of Visual Studio look for your Git repo again and click it. It should rebuild your .vs folder again. But now ".vs" will be ignored.

  3. Push your code to Azure, GitHub, etc. again. The ".vs" folder should not appear in your online repo and should be hidden. I use GitHub and it worked up there, so test your Azure.

If you missed gitignore during project creation.

Steps to easily solve

  1. Create a new similar project

  2. Copy the gitignore file and gitattributes file and paste to old solution.

  3. Clear git cache.

    git rm -r --cached .

    git add .

    git commit -m 'Remove ignored files'