Git忽略文件的几种方法,以及.gitignore文件的忽略规则

[复制链接]
发表于 2026-2-11 03:42:18 | 显示全部楼层 |阅读模式
.gitignore文件

   在利用Git的过程中,我们喜欢有的文件好比日记,暂时文件,编译的中心文件等不要提交到代码堆栈,这时就要设置相应的忽略规则,来忽略这些文件的提交。
    留意:如果你创建.gitignore文件之前就push了某一文件,那么纵然你在.gitignore文件中写入过滤该文件的规则,该规则也不会起作用,git仍旧会对该文件举行版本管理。
  Git忽略规则以及优先级

具体的忽略规则可以参考官方英文文档
在 .gitingore 文件中,每一行指定一个忽略规则,Git 查抄忽略规则的时间有多个泉源,它的优先级如下(由高到低):

  • 从下令行中读取可用的忽略规则
  • 当前目次界说的规则
  • 父级目次界说的规则,依次递推,目次结构较高的.gitignore文件被较近的.gitignore文件中类似的设置所覆盖
  • .git/info/exclude文件中界说的规则
  • core.excludesfile中界说的全局规则
.gitignore文件忽略规则


  • 空格不匹配恣意文件,可作为分隔符,方便阅读。
  • #用于表明,\表现转义(如需利用实体\,则要加引号"\")。
  • *可以匹配任何字符(0或多个)。
  • ?可以匹配单个字符。(不可以匹配/)
  • /用于分隔目次:

    • 当/在开头时,表现从.gitignore文件地点的根目次开始匹配。
    • 当/在末了时,只匹配目次及该目次下面的全部内容,否则同名的目次和文件都将匹配。

  • !开头的模式标识否定,该文件将会再次被包罗,如果打扫了该文件的父级目次,则利用!也不会再次被包罗。
  • []通常用于匹配一个字符列表,如:a[mn]z可匹配amz和anz。
  • **用于匹配多级目次,如a/**/b可匹配a/b,a/x/b,a/x/y/b。
    留意:git 对于 .gitignore设置文件是按行从上到下举行规则匹配的。
常用匹配示例:



  • #: 表现此为表明,将被Git忽略。
  • *:表现忽略全部。
  • */:表现忽略全部目次。
  • 1.txt: 忽略恣意目次(当前目次即根目次及其子文件夹)下的1.txt的文件夹或同名文件,比方1.txt,/pojo/1.txt,/pojo/a/1.txt,如果文件夹则该文件夹下的全部内容都会被忽略。
  • *.txt: 忽略恣意目次(当前目次即根目次及其子文件夹)下的全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略。
  • /1.txt:忽略根路径下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
  • /*.txt: 忽略根路径下的全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略 /pojo/1.txt。
  • pojo:忽略恣意目次(当前目次即根目次及其子文件夹)下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
  • /pojo: 忽略根目次下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
  • pojo/: 忽略目次 pojo下的全部内容;留意,不管是根目次下的/pojo/目次,照旧某个目次下的 /child/pojo/,以及pojo文件夹内里的全部内容都会被忽略,同时忽略pojo文件夹,以pojo定名的文件不会忽略。
  • pojo/*:忽略当前路径下pojo文件夹下的全部内容,pojo文件夹不忽略。
  • /pojo/: 忽略根目次下的pojo文件夹,该文件夹下的全部内容都会被忽略,以pojo定名的文件不会忽略。
  • pojo/1.txt:忽略当前路径下的pojo下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo文件夹。
  • /pojo/1.txt:忽略根目次下的pojo文件下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo文件夹。
  • pojo/*.txt: 忽略当前路径下的pojo文件夹下全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo/common/1.txt,不忽略/a/pojo/1.txt,不忽略pojo文件夹。
  • pojo/1.txt/*:忽略当前路径下的pojo文件夹下的1.txt文件夹中的全部文件,1.txt文件夹不忽略。
  • **/pojo: 忽略恣意目次下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。/pojo,/pojo/1.txt,/a/pojo,/a/pojo/1.txt,a/b/pojo等。
  • a/**/b: 忽略当前路径下的以a文件夹为开始,中心可以有0个或恣意个目次的b文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,a/b,a/x/b,a/x/y/b,a/x/y/b/1.txt等。
  • /pojo/*和!/pojo/1.txt: 忽略pojo目次下的全部文件但不忽略pojo目次下的1.txt文件,pojo文件夹不忽略。
    留意上面的/pojo/*不能写为/pojo/,否则父目次被前面的规则扫撤除了,1.txt文件固然加了!过滤规则,也不会收效!
有三种方法可以实现忽略Git中不想提交的文件。

1、在Git项目中界说 .gitignore 文件(优先级最高,保举!)

这种方式通过在项目的某个文件夹下界说 .gitignore 文件,在该文件中界说相应的忽略规则,来管理当前文件夹及其子文件夹下的文件的Git提交举动。
.gitignore 文件是可以提交到公有堆栈中,这就为该项目下的全部开发者都共享一套界说好的忽略规则。
在 .gitingore 文件中,遵照相应的语法,在每一行指定一个忽略规则。如:
样例一:
  1. HELP.md
  2. target/
  3. !.mvn/wrapper/maven-wrapper.jar
  4. !**/src/main/**/target/
  5. !**/src/test/**/target/
  6. ### STS ###
  7. .apt_generated
  8. .classpath
  9. .factorypath
  10. .project
  11. .settings
  12. .springBeans
  13. .sts4-cache
  14. ### IntelliJ IDEA ###
  15. .idea
  16. *.iws
  17. *.iml
  18. *.ipr
  19. mvnw
  20. mvnw.cmd
  21. .mvn
  22. ### NetBeans ###
  23. /nbproject/private/
  24. /nbbuild/
  25. /dist/
  26. /nbdist/
  27. /.nb-gradle/
  28. build/
  29. logs/
  30. !**/src/main/**/build/
  31. !**/src/test/**/build/
  32. ### VS Code ###
  33. .vscode/
复制代码
样例二:
  1. ######################
  2. # Project Specific
  3. ######################
  4. /target/www/**
  5. /src/test/javascript/coverage/
  6. /src/test/javascript/PhantomJS*/
  7. ######################
  8. # Node
  9. ######################
  10. /node/
  11. node_tmp/
  12. node_modules/
  13. npm-debug.log.*
  14. ######################
  15. # SASS
  16. ######################
  17. .sass-cache/
  18. ######################
  19. # Eclipse
  20. ######################
  21. *.pydevproject
  22. .project
  23. .metadata
  24. tmp/
  25. tmp/**/*
  26. *.tmp
  27. *.bak
  28. *.swp
  29. *~.nib
  30. local.properties
  31. .classpath
  32. .settings/
  33. .loadpath
  34. .factorypath
  35. /src/main/resources/rebel.xml
  36. # External tool builders
  37. .externalToolBuilders/**
  38. # Locally stored "Eclipse launch configurations"
  39. *.launch
  40. # CDT-specific
  41. .cproject
  42. # PDT-specific
  43. .buildpath
  44. ######################
  45. # Intellij
  46. ######################
  47. HELP.md
  48. .idea
  49. *.iws
  50. *.iml
  51. *.ipr
  52. mvnw
  53. mvnw.cmd
  54. .mvn
  55. *.ids
  56. *.orig
  57. classes/
  58. ######################
  59. # Visual Studio Code
  60. ######################
  61. .vscode/
  62. ######################
  63. # Maven
  64. ######################
  65. /log/
  66. target/
  67. ######################
  68. # Gradle
  69. ######################
  70. .gradle/
  71. /build/
  72. ######################
  73. # Package Files
  74. ######################
  75. *.jar
  76. *.war
  77. *.ear
  78. *.db
  79. ######################
  80. # Windows
  81. ######################
  82. # Windows image file caches
  83. Thumbs.db
  84. # Folder config file
  85. Desktop.ini
  86. ######################
  87. # Mac OSX
  88. ######################
  89. .DS_Store
  90. .svn
  91. # Thumbnails
  92. ._*
  93. # Files that might appear on external disk
  94. .Spotlight-V100
  95. .Trashes
  96. ######################
  97. # Logs
  98. ######################
  99. *.log
  100. ######################
  101. # Others
  102. ######################
  103. *.class
  104. *.*~
  105. *~
  106. .merge_file*
  107. ######################
  108. # Gradle Wrapper
  109. ######################
  110. !gradle/wrapper/gradle-wrapper.jar
  111. ######################
  112. # Maven Wrapper
  113. ######################
  114. !.mvn/wrapper/maven-wrapper.jar
  115. ######################
  116. # ESLint
  117. ######################
  118. .eslintcache
  119. /.apt_generated/
  120. server/package-lock.json
  121. server/mochawesome-report/
复制代码
2、在Git项目的设置中指定打扫文件

这种方式只是暂时指定该项目的举动,须要编辑当前项目下的 .git/info/exclude 文件,然后将须要忽略提交的文件写入此中。
须要留意的是,这种方式指定的忽略文件的根目次是项目根目次。
3、界说Git全局的 .gitignore 文件(个人利用方便,但是团队的话不实用,由于是在本身电脑设置的全局)

除了可以在项目中界说 .gitignore 文件外,还可以设置全局的 git .ignore 文件来管理全部Git项目的举动。这种方式在差异的项目开发者之间是不共享的,是属于项目之上Git应用级别的举动。
1) 创建忽略规则文件 xxxx.ignore(前缀名任意起,发起是 git.ignore).
这个文件的存放位置原则上在那里都可以,为了便于让~/.gitconfig 文件引用,发起也放在用
户家目次下
git.ignore 文件模版内容如下:
  1. # Compiled class file
  2. *.class
  3. # Log file
  4. *.log
  5. # BlueJ files
  6. *.ctxt
  7. # Mobile Tools for Java (J2ME)
  8. .mtj.tmp/
  9. # Package Files #
  10. *.jar
  11. *.war
  12. *.nar
  13. *.ear
  14. *.zip
  15. *.tar.gz
  16. *.rar
  17. # virtual machine crash logs, see
  18. http://www.java.com/en/download/help/error_hotspot.xml
  19. hs_err_pid*
  20. .classpath
  21. .project
  22. .settings
  23. target
  24. .idea
  25. *.iml
复制代码
2) 在.gitconfig 文件中引用忽略设置文件(此文件在 Windows 的家目次中)我的是在C:\Users\PC.gitconfig
  1. [user]
  2.         email = xuxin@wondertek.com.cn
  3.         name = xuxin666
  4. [credential "https://gitee.com"]
  5.         provider = generic
  6. [core]
  7.         excludesfile = C:/Users/PC/git.ignore
复制代码
留意:这里要利用“正斜线(/)”,不要利用“反斜线(\)”
怎样查抄本身写的ignore规则是否有效?

  1. git check-ignore -v {文件或目录路径}
复制代码




gitignore规则不收效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
办理方法就是先修改.gitignore文件,之后在实验以下内容先把本地缓存删除(改变成未track状态),然后再提交:
  1. git rm -r --cached .
复制代码
  1. git add .
复制代码
  1. git commit -m 'update .gitignore'
复制代码
同样的,已被.gitignore忽略的文件是无法加入版本库的。
办理方法:要纳入版本管理,先移除规则。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表