git忽略除指定文件/指定后缀名文件外的文件

时间:2021-09-30 23:38:14

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

举个例子:

假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

然后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini # Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build # My configurations:
db.ini
deploy_key_rsa

最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是git status命令是不是说working directory clean

使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git:

$ git add -f App.class

或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v App.class
.gitignore:3:*.class App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

小结

  • 忽略某些文件时,需要编写.gitignore

  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

gitignore文件:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. # User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates project.lock.json nugetpack.sh # User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
[Oo]utput/
[Ss]piders/
[Pp]ackages/
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/ # Visual Studo cache/options directory
.vs/ # 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 *_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.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
*.opensdf
*.sdf
*.cachefile # Visual Studio profiler
*.psess
*.vsp
*.vspx # TFS 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 addin-in
.JustCode # TeamCity is a build add-in
_TeamCity* # DotCover is a Code Coverage Tool
*.dotCover # NCrunch
_NCrunch_*
.*crunch*.local.xml # 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
# TODO: 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 # NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config # Windows Azure Build Output
csx/
*.build.csdef # Windows Store app package directory
AppPackages/ # Others
*.[Cc]ache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
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 # SQL Server files
*.mdf
*.ldf # Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings # Microsoft Fakes
FakesAssemblies/ # Node.js Tools for Visual Studio
.ntvs_analysis.dat # Visual Studio build log
*.plg # Visual Studio workspace options file
*.opt # idea ignore
.idea/
*.ipr
*.iml
*.iws # system ignore
.DS_Store
Thumbs.db

1、环境

Windows XP SP3 + TortoiseGit + msysGit

2、ignore files的三种方法

以下涉及的ignore文件均为如下格式:

#以'#'开始的行,被视为注释.

#忽略掉所有文件名是foo.txt的文件.

foo.txt

#忽略所有生成的html文件,

*.html

# foo.html是手工维护的,所以例外.

!foo.html

#忽略所有.o和.a文件.

*.[oa]

# 忽略*.o和*.a文件

*.[oa]

# 忽略*.b和*.B文件,my.b除外

*.[bB]

!my.b

# 忽略dbg文件和dbg目录

dbg

# 只忽略dbg目录,不忽略dbg文件

dbg/

# 只忽略dbg文件,不忽略dbg目录

dbg

!dbg/

# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内

/dbg

参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758404317281e54b6f5375640abbb11e67be4cd49e0000