Git忽略提交规则
现在开源项目越来越多,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/