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

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

相关推荐
一条闲鱼_mytube40 分钟前
Cursor 中优雅使用 Agent Skills:从 0 到一套可复用的“技能系统”
ide
凯酱40 分钟前
git 拉取指定分支
git
云和数据.ChenGuang1 小时前
CANN实现语音积分程序的测试
ide·macos·ai·cann·人工智能识别语音
南草徽1 小时前
vscode小技巧预览-返回到上一级文件夹
ide·vscode·编辑器
zhangchangz1 小时前
Idea护眼插件分享之:Catppuccin Theme
java·ide·intellij-idea
beginner.zs2 小时前
OpenCode IDE 全面介绍与实战使用指南
ide·语言模型·编辑器
Easonmax2 小时前
【鸿蒙pc命令行适配】tig(git命令行可视化)工具移植实战:解决ncurses库依赖、terminfo终端适配与环境配置全流程
git·华为·harmonyos
Jackson@ML2 小时前
2026最新版IntelliJ IDEA安装使用指南
java·ide·intellij-idea
吃不胖爹2 小时前
解决VSCode运行时自动保存问题
ide·vscode·编辑器
petunsecn3 小时前
多 GitHub 账号与多平台 Git 使用(附加场景:就想用指定账号clone)
git·github