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


    前言:   

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

    需要忽略提交的文件:

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

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

    以下是一个.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 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
    *.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 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/
    
    # 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
    View Code

    .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

    该忽略规则参考地址: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训练营Applicationobj  

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

    git rm -r --cached Application/obj

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

  • 相关阅读:
    正确使用 Volatile 变量
    什么叫持久化?
    大型J2EE项目中的Web容器集群–Nginx+Glasshfish+Memcached+ServletFilter
    REST
    Java多线程设计模式:wait/notify机制
    Java Persistence API (JPA) 的陷阱
    JDK1.5新特性介绍
    用Amazon EC2搭建免费WordPress博客及SSH
    PDF Split and Merge Basic 好用的PDF合并分割工具
    路威机器人
  • 原文地址:https://www.cnblogs.com/Can-daydayup/p/14042091.html
Copyright © 2020-2023  润新知