現在開源項目越來越多,Git使用越來越方便,用Git的人也越來越多。創建項目的時候,喜歡把日誌,臨時文件,項目編譯的中間文件,引用的類庫等等,這時就要設置響應的規則,來忽略這些文件。例如創建一個C#項目,項目下麵會有.vs,bin,obj等,這些都是不需要提交的需要忽略的,如何忽略呢?其實很簡單,增 ...
現在開源項目越來越多,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/