Visual Studio使用Git忽略不想上传到远程仓库的文件

前言:   

   作为一个.NET开发者而已,有着宇宙最强IDE:Visual Studio加持,让我们的开发效率得到了更好的提升。我们不需要担心环境变量的配置和其他代码管理工具,因为VS有丰富的拓展工具。废话不多说,直接进入正题。我们日常在使用VS开发相关的.NET项目时,经常会发现刚拉取下拉的代码什么都没有改动,就是运行了一下就会产生一些需要提交的文件,比如说最常见的bin/Debug, bin/Release,obj/Debug,obj/Release文件。但是我不想把这些文件提交到远程的git代码远程仓库中去,其实这个很简单只需要我们在初次创建项目的时候在项目目录下新增一个忽略文本文件(.gitignore),然后在使用git推送到远程仓库中就好了。.

需要忽略提交的文件:

Visual Studio使用Git忽略不想上传到远程仓库的文件

配置.gitignore忽略文件,忽略不需要提交的文件:

添加Visual Studio的.gitgnore模板到项目中:

Visual Studio使用Git忽略不想上传到远程仓库的文件

以下是一个.NET/.NET Core相关项目的忽略文件模板只要是使用VisualStudio开发的项目都可以使用:

gitnore忽略文件模板来源:https://github.com/github/gitignore/blob/master/VisualStudio.gitignore,该项目中有众多的编程语言或IDE相关.gitgnore配置,可以下载下来直接使用。

## Ignore Visual Studio temporary files, build results, and## files generated by popular Visual Studio add-ons.#### Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files*.rsuser*.suo*.user*.userosscache*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)*.userprefs
# Mono auto generated filesmono_crash.*
# Build results[Dd]ebug/[Dd]ebugPublic/[Rr]elease/[Rr]eleases/x64/x86/[Ww][Ii][Nn]32/[Aa][Rr][Mm]/[Aa][Rr][Mm]64/bld/[Bb]in/[Oo]bj/[Ll]og/[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory.vs/# Uncomment if you have tasks that create the project's static files in wwwroot#wwwroot/
# Visual Studio 2017 auto generated filesGenerated\ Files/
# MSTest test Results[Tt]est[Rr]esult*/[Bb]uild[Ll]og.*
# NUnit*.VisualState.xmlTestResult.xmlnunit-*.xml
# Build Results of an ATL Project[Dd]ebugPS/[Rr]eleasePS/dlldata.c
# Benchmark ResultsBenchmarkDotNet.Artifacts/
# .NET Coreproject.lock.jsonproject.fragment.lock.jsonartifacts/
# ASP.NET ScaffoldingScaffoldingReadMe.txt
# StyleCopStyleCopReport.xml
# Files built by Visual Studio*_i.c*_p.c*_h.h*.ilk*.meta*.obj*.iobj*.pch*.pdb*.ipdb*.pgc*.pgd*.rsp*.sbr*.tlb*.tli*.tlh*.tmp*.tmp_proj*_wpftmp.csproj*.log*.vspscc*.vssscc.builds*.pidb*.svclog*.scc
# Chutzpah Test files_Chutzpah*
# Visual C++ cache filesipch/*.aps*.ncb*.opendb*.opensdf*.sdf*.cachefile*.VC.db*.VC.VC.opendb
# Visual Studio profiler*.psess*.vsp*.vspx*.sap
# Visual Studio Trace Files*.e2e
# TFS 2012 Local Workspace$tf/
# Guidance Automation Toolkit*.gpState
# ReSharper is a .NET coding add-in_ReSharper*/*.[Rr]e[Ss]harper*.DotSettings.user
# TeamCity is a build add-in_TeamCity*
# DotCover is a Code Coverage Tool*.dotCover
# AxoCover is a Code Coverage Tool.axoCover/*!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Toolcoverage*.jsoncoverage*.xmlcoverage*.info
# Visual Studio code coverage results*.coverage*.coveragexml
# 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# Note: 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
# Microsoft Azure Web App publish settings. Comment the next line if you want to# checkin your Azure Web App publish settings, but sensitive information contained# in these scripts will be unencryptedPublishScripts/
# NuGet Packages*.nupkg# NuGet Symbol Packages*.snupkg# The packages folder can be ignored because of Package Restore**/[Pp]ackages/*# except build/, which is used as an MSBuild target.!**/[Pp]ackages/build/# Uncomment if necessary however generally it will be regenerated when needed#!**/[Pp]ackages/repositories.config# NuGet v3's project.json files produces more ignorable files*.nuget.props*.nuget.targets
# Microsoft Azure Build Outputcsx/*.build.csdef
# Microsoft Azure Emulatorecf/rcf/
# Windows Store app package directories and filesAppPackages/BundleArtifacts/Package.StoreAssociation.xml_pkginfo.txt*.appx*.appxbundle*.appxupload
# Visual Studio cache files# files ending in .cache can be ignored*.[Cc]ache# but keep track of directories ending in .cache!?*.[Cc]ache/
# OthersClientBin/~$**~*.dbmdl*.dbproj.schemaview*.jfm*.pfx*.publishsettingsorleans.codegen.cs
# Including strong name files can present a security risk# (https://github.com/github/gitignore/pull/2483#issue-259490424)#*.snk
# 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 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*.htmServiceFabricBackup/*.rptproj.bak
# SQL Server files*.mdf*.ldf*.ndf
# Business Intelligence projects*.rdl.data*.bim.layout*.bim_*.settings*.rptproj.rsuser*- [Bb]ackup.rdl*- [Bb]ackup ([0-9]).rdl*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft FakesFakesAssemblies/
# GhostDoc plugin setting file*.GhostDoc.xml
# Node.js Tools for Visual Studio.ntvs_analysis.datnode_modules/
# Visual Studio 6 build log*.plg
# Visual Studio 6 workspace options file*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)*.vbw
# Visual Studio LightSwitch build output**/*.HTMLClient/GeneratedArtifacts**/*.DesktopClient/GeneratedArtifacts**/*.DesktopClient/ModelManifest.xml**/*.Server/GeneratedArtifacts**/*.Server/ModelManifest.xml_Pvt_Extensions
# Paket dependency manager.paket/paket.exepaket-files/
# FAKE - F# Make.fake/
# CodeRush personal settings.cr/personal
# Python Tools for Visual Studio (PTVS)__pycache__/*.pyc
# Cake - Uncomment if you are using it# tools/**# !tools/packages.config
# Tabs Studio*.tss
# Telerik's JustMock configuration file*.jmconfig
# BizTalk build output*.btp.cs*.btm.cs*.odx.cs*.xsd.cs
# OpenCover UI analysis resultsOpenCover/
# Azure Stream Analytics local run outputASALocalRun/
# MSBuild Binary and Structured Log*.binlog
# NVidia Nsight GPU debugger configuration file*.nvuser
# MFractors (Xamarin productivity tool) working folder.mfractor/
# Local History for Visual Studio.localhistory/
# BeatPulse healthcheck temp databasehealthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder.ionide/
# Fody - auto-generated XML schemaFodyWeavers.xsd

.gitignore忽略规则:

语法: 

  • 以”#”号开头表示注释; 

  • 以斜杠“/”开头表示目录; 

  • 以星号“*”通配多个字符; 

  • 以问号“?”通配单个字符 

  • 以方括号“[]”包含单个字符的匹配列表; 

  • 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效; 

# 此为注释 – 将被 Git 忽略  *.a       # 忽略所有 .a 结尾的文件!lib.a    # 但 lib.a 除外/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/    # 忽略 build/ 目录下的所有文件doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

该忽略规则参考地址:https://blog.csdn.net/sundna/article/details/90749495

处理已提交到远程仓库中的文件:

  我们可能在开发的时候可能一时没有注意添加忽略文件配置(gitignore),把这些文件推送到远程仓库中,我们有以下两种做法解决:

1、把本地这些文件删除再提交到远端(前提是这些文件是环境变量文件,假如是无法自动生成的不推荐)。

2、使用以下git 命令:

//当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用git rm -r --cached file_path(文件路径)  //把file_path文件在当前分支的暂存区中删除git add .                               //提交当前操作本地暂存区git commit -m 'delete remote somefile'  //提交到本地git仓库git push                                //提交到远程代码库

如我需要移除某个项目中的obj文件然后提交:

该文件路径为:D:\开发学习-Master\我的训练营\DailyLearning\工作&学习.Net训练营\Application\obj  

输入以下命令移除相关不需要跟踪的文件:

git rm -r --cached Application/obj

执行成功后,文件将从该分支中删除(本地还会存在),最后我们提交到远程仓库即可。

Visual Studio使用Git忽略不想上传到远程仓库的文件

Visual Studio使用Git忽略不想上传到远程仓库的文件