现在开源项目越来越多,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/