.gitignore的用法

.gitignore的用法gitignore 的用法 Git 忽略文件 gitignore 详解在工程中 并不是所有文件都需要保存到版本库中的 例如 target 目录及目录下的文件就可以忽略 在 Git 工作区的根目录下创建一个特殊的 gitignore 文件 然后把要忽略的文件名填进去 Git 就会自动忽略这些文件或目录 Git 忽略规则优先级在 gitingore 文件中 每一行指定一个忽略规则 Git 检查忽略规则的时候有多个来源 它的优先级如下 由高到低 从命令行中读取可用的忽略规则当前目录定义的规则父级目录定义的

.gitignore的用法

Git忽略文件.gitignore详解

在工程中,并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。

Git 忽略规则优先级

在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

  1. 从命令行中读取可用的忽略规则
  2. 当前目录定义的规则
  3. 父级目录定义的规则,依次递推
  4. $GIT_DIR/info/exclude 文件中定义的规则
  5. core.excludesfile中定义的全局规则

Git 忽略规则匹配语法

在 .gitignore 文件中,每一行的忽略规则的语法如下:

* 空格不匹配任意文件,可作为分隔符,可用反斜杠转义 * 开头的文件标识注释,可以使用反斜杠进行转义 * ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义 * / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件 * / 开始的模式匹配项目跟目录 * 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录 * 匹配多级目录,可在开始,中间,结束 * ? 通用匹配单个字符 * * 通用匹配零个或多个字符 * [] 通用匹配单个字符列表 

常用匹配示例

bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件 /bin: 忽略根目录下的bin文件 /*.c: 忽略 cat.c,不忽略 build/cat.c debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj /foo: 忽略/foo, a/foo, a/b/foo等 a//b: 忽略a/b, a/x/b, a/x/y/b等 !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件 *.log: 忽略所有 .log 文件 config.php: 忽略当前路径的 config.php 文件 

.gitignore规则不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached . git add . git commit -m 'update .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行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

Java项目中常用的.gitignore文件

# Compiled class file *.class # Eclipse .project .classpath .settings/ # Intellij *.ipr *.iml *.iws .idea/ # Maven target/ # Gradle build .gradle # Log file *.log log/ # out /out/ # Mac .DS_Store # others *.jar *.war *.zip *.tar *.tar.gz *.pid *.orig temp/ 

c++项目中常用的.gitignore

# Prerequisites *.d # Compiled Object files *.slo *.lo *.o *.obj # Precompiled Headers *.gch *.pch # Compiled Dynamic libraries *.so *.dylib *.dll # Fortran module files *.mod *.smod # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app build/ .vscode/ 

参考文章:程序员小章.gitignore是干什么的?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204936.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:11
下一篇 2026年3月19日 下午7:12


相关推荐

  • Ladon MS17010 Exploit for PowerShell

    Ladon MS17010 Exploit for PowerShellWinLadonKaliPowerShellMS17010EXP#LadonMoudleMS17010EXPLOIT#UsingInvoke-EternalBlue.ps1#Authork8gegefunctionLadon(){param([string]$ip)#write-output$ip$result=-Join(“MS17010EXP”,$…

    2022年4月30日
    79
  • linux系统怎么看内存使用率_cpu使用率0

    linux系统怎么看内存使用率_cpu使用率0一、查看CPU使用率1.top命令top命令可以看到总体的系统运行状态和cpu的使用率。%us:表示用户空间程序的cpu使用率(没有通过nice调度)%sy:表示系统空间的cpu使用率,主要是内核程序。%ni:表示用户空间且通过nice调度过的程序的cpu使用率。%id:空闲cpu%wa:cpu运行时在等待io的时间%hi:cpu处理硬中断的数量%si:cpu处理软中断…

    2025年8月29日
    7
  • DDL和DML的含义

    DDL表示DataDefinitionLanguage数据定义语言,主要包括CREATE,ALTER,DROP;隐性提交的,不能rollback。DML表示DataManipulationLanguage数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE;可以手动控制事务的开启、提交和回滚的。…

    2022年4月6日
    59
  • 香农编码的matlab实现总结_matlab简单代码实例

    香农编码的matlab实现总结_matlab简单代码实例用MATLAB编程实现香农编码实验四、用MATLAB编程实现香农编码⒈实验目的和要求(1)了解信源变长码的编码方法(2)掌握香农编码方法(3)掌握MATLAB的编程⒉实验主要内容使用MATLAB语言和excel对以下信源进行香农编码,并求出平均码长和编码效率。3.实验原理Ⅰ.香农编码方法将信源发出的N个消息符号按其概率的递减次序排列按下式计算第个消息的二进制代码组的码长,并取整计算第个消息的累加概…

    2025年10月21日
    8
  • 2026年有新U盘怎么重装系统教程

    2026年有新U盘怎么重装系统教程

    2026年3月13日
    3
  • 文件共享服务 FTP,NFS 和 Samba

    文件共享服务 FTP,NFS 和 Samba

    2022年2月21日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号