忽略某些文件 —— Git 学习笔记 05

2024-09-09 05:38
文章标签 学习 笔记 05 git 忽略

本文主要是介绍忽略某些文件 —— Git 学习笔记 05,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

忽略某些文件

  • 忽略某些文件
    • 通过.gitignore文件
    • 其他规则源
    • 如何选择规则源
    • 参考资料

对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。

通过.gitignore文件

假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gitignore 的文件,在里面列出 lib.a

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

这里写图片描述

除了在.gitignore里面列出要忽略的文件名,Git 还支持一种更为丰富的机制:一个.gitignore文件里可以包含一个文件名模式列表,指定哪一类文件要忽略。格式如下:

  1. 空行会被忽略;以“#”号开头的行可以用于注释;

  2. 一个简单的字面值文件名(literal filename)匹配任何目录中的同名文件;

  3. 目录名由末尾的反斜线(/)标记。这能匹配同名的目录和子目录,但是不匹配文件或符号链接;

  4. 支持标准的 glob 模式。glob 模式类似于 shell 所使用的简化版正则表达式。具体来讲,*匹配零个或更多字符,[abc]匹配方括号内的任意单个字符(在这个例子里是a、b或c),而?则匹配任意单个字符。在方括号中使用短划线分隔的两个字符(比如 [0-9])能够匹配在这两个字符范围内的任何单个字符(在这个例子里是0到9之间的任何数字)。注意*不能匹配路径分隔符。

  5. 可以用**匹配嵌套的目录,比如 a/**/z 能够匹配 a/z、a/b/z 和 a/b/c/z 等。

  6. /开头的模式可用于禁止递归匹配,即只匹配当前目录或文件,而不匹配子目录或子目录下的文件。

  7. !开始的模式表示取反,即原本被忽略的目录或文件又被 Git 追踪。注意:出于性能考虑,Git不会遍历已经被忽略的目录,因此,定义在被忽略目录下的.gitignore规则都是无效的。

说明

  1. Git 允许在版本库中任何目录下有.gitignore文件。每个文件都只影响该目录及其所有子目录。
  2. 对于多个.gitignore文件,Git 会根据“就近原则”决定结果。简而言之,就是当前目录(如果当前目录没有被上层目录忽略)的模式能推翻上层目录的模式,最接近当前目录的上层目录的模式能推翻更上层的目录模式。
  3. 忽略只对未跟踪的文件有效,对于已加入版本库的文件无效。
  4. 如果要停止 track 一个已经被 Git 追踪的文件,可以用git rm --cached file命令 。
  5. 如果想把某个被忽略的文件加入版本控制, 而又不想修改 gitignore规则(也许改起来特别麻烦),你可以使用 git add -f file 命令。

其他规则源

除了.gitignore文件,Git 还有其他的规则源。通常来说,Git 会从多个可能的规则源获取gitignore规则来决定是否要忽略某一个具体的路径。以下列出了各种规则源:

  1. 配置变量core.excludesFile中指定的规则
  2. .git/info/exclude中定义的规则
  3. .gitignore文件(后文会具体说明)
  4. 从命令行输入的规则

说明:

  1. 在判断是否会忽略某个路径时,Git 会根据上述列表中的模式以一定的顺序进行模式匹配,然后根据就近优先原则决定结果(从上至下,以最后匹配上的为准)。
  2. 对于.gitignore文件,Git 会从项目的顶级目录开始,依次遍历项目中的所有文件。子目录(如果没有被父级目录忽略的话)可以覆盖父目录中的规则。
  3. 在一个规则源内部,如果有多个规则匹配,以最后匹配上的为准。

以上三点,总结成一句话——就近原则

如何选择规则源

规则定义在哪个文件中取决于该规则的作用域:

  • 如果一个gitignore规则应该被Git追踪,或者希望别人clone仓库后这些规则也生效,那么它就应该被定义在.gitignore文件中

  • 如果只想规则在某一个仓库中生效,但是不需要共享给其他用户, 那么可以把它定义在此仓库的.git/info/exclude中,这样它不会随clone而被复制

  • 如果你想某个规则对所有仓库都生效,则可以配置变量core.excludesFile。例如

    $ touch ~/.gitignore 
    $ git config --global core.excludesFile ~/.gitignore 

    第1行:在家目录下面创建一个文件.gitignore,其实路径和文件名可以自选。当然你需要在这个文件中写点规则

    第2行:配置变量core.excludesFile








参考资料

  1. https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758404317281e54b6f5375640abbb11e67be4cd49e0000(廖雪峰)
  2. https://blog.csdn.net/yongf2014/article/details/79268871
  3. https://www.atlassian.com/git/tutorials/saving-changes/gitignore#git-ignore-patterns
  4. 《Git 高手之路》,人民邮电出版社
  5. 《Git 版本控制管理(第2版)》,人民邮电出版社
  6. 《精通 Git(第2版)》,人民邮电出版社

这篇关于忽略某些文件 —— Git 学习笔记 05的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150313

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个