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

前言

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

需要忽略提交的文件

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

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

C#/.NET/.NET Core相关项目的忽略文件模板(VisualStudio.gitignore)

只要是使用VisualStudio开发的项目都可以使用该模板。

  • VisualStudio.gitignore模板GitHub开源地址(该项目中有众多的编程语言或IDE相关.gitgnore配置,可以下载下来直接使用):https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

    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/main/VisualStudio.gitignore

    User-specific files

    *.rsuser
    *.suo
    *.user
    *.userosscache
    *.sln.docstates

    User-specific files (MonoDevelop/Xamarin Studio)

    *.userprefs

    Mono auto generated files

    mono_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 files

    Generated\ Files/

    MSTest test Results

    [Tt]est[Rr]esult*/
    [Bb]uild[Ll]og.*

    NUnit

    .VisualState.xml
    TestResult.xml
    nunit-
    .xml

    Build Results of an ATL Project

    [Dd]ebugPS/
    [Rr]eleasePS/
    dlldata.c

    Benchmark Results

    BenchmarkDotNet.Artifacts/

    .NET Core

    project.lock.json
    project.fragment.lock.json
    artifacts/

    ASP.NET Scaffolding

    ScaffoldingReadMe.txt

    StyleCop

    StyleCopReport.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
    *.tlog
    *.vspscc
    *.vssscc
    .builds
    *.pidb
    *.svclog
    *.scc

    Chutzpah Test files

    _Chutzpah*

    Visual C++ cache files

    ipch/
    *.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 Tool

    coverage*.json
    coverage*.xml
    coverage*.info

    Visual Studio code coverage results

    *.coverage
    *.coveragexml

    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

    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 unencrypted

    PublishScripts/

    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 Output

    csx/
    *.build.csdef

    Microsoft Azure Emulator

    ecf/
    rcf/

    Windows Store app package directories and files

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

    Others

    ClientBin/
    ~$*
    *~
    *.dbmdl
    *.dbproj.schemaview
    *.jfm
    *.pfx
    *.publishsettings
    orleans.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 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
    ServiceFabricBackup/
    *.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 Fakes

    FakesAssemblies/

    GhostDoc plugin setting file

    *.GhostDoc.xml

    Node.js Tools for Visual Studio

    .ntvs_analysis.dat
    node_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 6 auto-generated project file (contains which files were open etc.)

    *.vbp

    Visual Studio 6 workspace and project file (working project files containing files to include in project)

    *.dsw
    *.dsp

    Visual Studio 6 technical files

    *.ncb
    *.aps

    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/

    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 results

    OpenCover/

    Azure Stream Analytics local run output

    ASALocalRun/

    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/

    Visual Studio History (VSHistory) files

    .vshistory/

    BeatPulse healthcheck temp database

    healthchecksdb

    Backup folder for Package Reference Convert tool in Visual Studio 2017

    MigrationBackup/

    Ionide (cross platform F# VS Code tools) working folder

    .ionide/

    Fody - auto-generated XML schema

    FodyWeavers.xsd

    VS Code files for those working on multiple tools

    .vscode/*
    !.vscode/settings.json
    !.vscode/tasks.json
    !.vscode/launch.json
    !.vscode/extensions.json
    *.code-workspace

    Local History for Visual Studio Code

    .history/

    Windows Installer files from build outputs

    *.cab
    *.msi
    *.msix
    *.msm
    *.msp

    JetBrains Rider

    *.sln.iml

.gitignore忽略规则

基本语法:

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

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

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

  • 以问号"?"通配单个字符;

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

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

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

代码示例

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

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

可能在开发的时候忘记添加忽略文件配置(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

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

相关推荐
饼干ovo36 分钟前
shell编程
java·git·github
未来之窗软件服务42 分钟前
【免费】会员管理系统——-智能编程——仙盟创梦IDE
ide·会员系统·智能编程·仙盟创梦ide
大道随心3 小时前
【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
ide·开源·ai编程
bubiyoushang8888 小时前
解决 Git 访问 GitHub 时的 SSL 错误
git·github·ssl
C++ 老炮儿的技术栈10 小时前
UDP 与 TCP 的区别是什么?
开发语言·c++·windows·算法·visual studio
海码00712 小时前
【版本控制】Git 和 GitHub 入门教程
git·github
网硕互联的小客服15 小时前
503 Service Unavailable:服务器暂时无法处理请求,可能是超载或维护中如何处理?
服务器·git·github
维克喇叭16 小时前
vscode 离线安装第三方库跳转库
ide·vscode·编辑器
abcnull17 小时前
github开源协议选择
git·github·开源协议
安庆平.Я19 小时前
git互联GitHub 使用教程
git·github