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

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

相关推荐
但老师4 小时前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y4 小时前
git创建分支
git
小灰灰__7 小时前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
Mortal_hhh8 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
无极程序员8 小时前
PHP常量
android·ide·android studio
研究是为了理解9 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT9 小时前
Git 的基本概念和使用方式
git
小黄人软件11 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio
Winston Wood12 小时前
一文了解git TAG
git·版本控制