现在开源项目越来越多, Git 使用越来越方便, 用 Git 的人也越来越多. 创建项目的时候, 喜欢把日志, 临时文件, 项目编译的中间文件, 引用的类库等等, 这时就要设置响应的规则, 来忽略这些文件. 例如创建一个 C# 项目, 项目下面会有. vs,bin,obj 等, 这些都是不需要提交的需要忽略的, 如何忽略呢? 其实很简单, 增加. gitignore 文件就可以了, 下面将详细说明 C# 项目的忽视规则.
创建 Git 项目
创建 Git 项目, 创建的时候有个. gitignore 的选项, 根据自己的需要选择需要忽视的文件, 例如: java,python 等, C# 的项目选择 VisualStudio, 因为创建的都是 VS 项目, 这里面有需要 C# 项目所忽略的设置. 创建完项目之后, 项目下面就有个. gitignore 文件, 这个文件是可以修改的.
忽视文件
例如: 忽视后缀是. suo,.user 的文件,* 正式所有
*.suo *.user
忽视文件夹
[Dd] 用的是正则, 匹配大小写 d, 两个 ** 表示匹配任意中间目录
- [Dd]ebug/
- [Dd]ebugPublic/
- [Rr]elease/
- [Rr]eleases/
- **/[Pp]ackages/*
Git 忽略文件的原则
1. 编译生成的文件, 例如: dll, 等
2. 配置文件, 敏感的信息 (密码, 口令)
3. 项目工具生成的文件, 例如: 引用 Nuget 时生成的 packages 等
4. 项目测试的文件, 日志文件等.
.gitignore 忽略规则的匹配语法
1. "#" 开头, 是 Git 上的注释说明
2. 以 "/" 开头表示根目录, 其他位置的 "/" 表示的是忽视目录
3."*" 匹配多个字符,"**" 匹配任意中间目录
4."[]" 匹配中括号中的字符
5."!" 表示不忽视, 即: 如果忽视某些文件, 可以用! 让这些文件在启用, 如果文件夹的父目录被忽略了, 那么这个文件在启用, 也就没有什么用了.
注意: Git 对于. ignore 配置文件是从上到下进行规则匹配的, 如果前面的规则匹配的范围更大, 则后面的规则将不会生效; Git 上的忽视文件. ignore 要在创建 Git 的时候创建, 如果是之后创建的, 已经 push 过的, 在忽视将不起作用, 因为 Git 已经开始管理这些文件了.
.gitignore 查看忽视文件和文件夹
- Git check-ignore -v bin
- .gitignore:23:[Bb]in/ bin
查看忽视文件夹, 可以看到, 第 23 行的忽视规则把 bin 给忽视掉了, 如果运行指令, 没有返回值则表示没有忽视此文件或者文件夹的规则.
Git 忽视已经上传的文件解决办法
在使用 Git 的时候, 创建了一个. gitignore 文件, 但是后来发现有一个文件已经上传了, 没有写忽视规则, 但是又想这个文件 [本地保存] ,[远程删除] , 例如: 忽视已经上传的文件 [test.txt] 或者文件夹, 用 Git rm -r -cached directory
1. Git rm -r --cached test.txt
2. commit 和 push
操作之后, 你可以看到本地文件还在, 远程的已经删除了
VS 项目忽视文件 (C#,.NET,MVC 等)
- ## 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
- *.suo
- *.user
- *.userosscache
- *.sln.docstates
- # User-specific files (MonoDevelop/Xamarin Studio)
- *.userprefs
- # Build results
- [Dd]ebug/
- [Dd]ebugPublic/
- [Rr]elease/
- [Rr]eleases/
- x64/
- x86/
- bld/
- [Bb]in/
- [Oo]bj/
- [Ll]og/
- # 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
- # 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/
- **/Properties/launchSettings.JSON
- # StyleCop
StyleCopReport.xml
- # Files built by Visual Studio
- *_i.c
- *_p.c
- *_i.h
- *.ilk
- *.meta
- *.obj
- *.iobj
- *.pch
- *.pdb
- *.ipdb
- *.pgc
- *.pgd
- *.rsp
- *.sbr
- *.tlb
- *.tli
- *.tlh
- *.tmp
- *.tmp_proj
- *.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
- # JustCode is a .NET coding add-in
- .JustCode
- # TeamCity is a build add-in
- _TeamCity*
- # DotCover is a Code Coverage Tool
- *.dotCover
- # AxoCover is a Code Coverage Tool
- .axoCover/*
- !.axoCover/settings.JSON
- # 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
- # 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
- # 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
- # 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/
- # JetBrains Rider
- .idea/
- *.sln.iml
- # CodeRush
- .cr/
- # 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/
来源: https://www.cnblogs.com/zhao123/p/11262540.html