Git忽略目录和目录/*有什么区别?

2023-12-06

我对忽略 git 中目录内容的正确方法感到困惑。

假设我有以下目录结构:

my_project  
     |--www  
         |--1.txt  
         |--2.txt
     |--.gitignore

放置这个有什么区别:

www

和这个?

www/*

我问这个问题的原因是:在 git 中,如果目录为空,git 不会在存储库中包含这样的空目录。所以我尝试的解决方案是在目录下添加一个额外的 .gitkeep 文件,这样它就不会是空的。当我尝试该解决方案时,如果在 .gitignore 文件中,我会写如下:

www
!*.gitkeep

它不起作用(我的意图是忽略www下的所有内容但保留目录)。但如果我尝试以下操作:

www/* 
!*.gitkeep

然后就可以了!所以我认为这两种方法之间肯定存在一些差异。


之间存在差异www, www/ and www/*.

基本上来自文档以及我自己的测试,www查找与文件或目录的匹配项,www/只匹配目录,而www/*匹配里面的目录和文件www.

我只会讨论之间的差异www/ and www/*在这里,由于之间的差异www and www/是显而易见的。

For www/, git 忽略该目录www本身,这意味着 git 甚至不会查看内部。但对于www/*, git 检查里面的所有文件/文件夹www,并忽略所有具有模式的*。这似乎会导致相同的结果,因为 git 不会跟踪空文件夹www如果其所有子文件/文件夹都被忽略。事实上,对于 OP 的情况来说,结果不会有什么不同www/ or www/*独立的。但如果与其他规则结合起来,它确实会产生差异。

例如,如果我们只想包括www/1.txt但忽略里面的所有其他人www?

下列.gitignore行不通的。

www/
!www/1.txt

虽然以下.gitignore有效,为什么?

www/*
!www/1.txt

对于前者,git 只是忽略目录www,甚至不会查看内部以包括www/1.txt再次。第一条规则排除父目录www但不是www/1.txt,结果www/1.txt不可能是 ”再次包含在内".

但对于后者,git 首先忽略下面的所有文件/文件夹www,然后再次包含其中之一,即www/1.txt.

对于此示例,文档中的以下几行可能会有所帮助:

可选前缀“!”这否定了模式;任何匹配的文件 被先前模式排除的将再次被包含。它不是 如果该文件的父目录是,则可以重新包含该文件 排除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git忽略目录和目录/*有什么区别? 的相关文章

随机推荐

  • Angular 中的变更检测 API 底层架构

    我正在阅读这篇文章 并对更改检测操作的工作原理感到困惑 https vsavkin com change detection in angular 2 4f216b855d4c 这个概念 Angular 表示它不会进行脏检查 也没有像 An
  • 如何通过 ingress 在 GKE 中启用 cors

    我尝试使用以下注释启用带有入口的 cors 但没有成功 kubernetes io ingress class nginx nginx ingress kubernetes io enable cors true 正确的注释是ingress
  • 是否有一棵树可以对对象进行排序?

    我编写了一个红黑二叉统计树 以获得与红黑树中其他对象可比较的任意对象的排名 我想知道是否有一个 API 类提供相同的功能 如果给定一个等级 该类有一个函数可以返回树中该等级的对象 那就太好了 请注意 红黑 BST 允许在 log n 时间内
  • 将 Unicode 代码点转换为 UTF-8 和 UTF-32

    我想不出一种方法来删除前导零 我的目标是for循环创建每个数字的 UTF 8 和 UTF 32 版本 例如 对于 UTF 8 我不需要删除前导零吗 有谁有解决方案来解决这个问题 基本上我要问的是 有人有一个简单的解决方案将 Unicode
  • 空 XML 分离出默认 XML

    我有一个传递给 XSL 的 XML 它提供了标准输出 根据某些情况 有时我可能会将 XML 设为空 如果我们有空 XML 并获取 XSL 中的标准或默认输出 有什么办法吗 如果我们有空 XML 有什么办法吗 并获取标准或默认值 放入 XSL
  • Java(Eclim + Vim)“system.out.print”不工作

    我是 Java 编程新手 今天在摆弄 eclim 和 vim 时 我发现 System out println 功能不起作用 class apples public static void main String args double t
  • 更改屏幕后反应本机保存按钮状态

    我的应用程序中有 5 个按钮 跑步 骑行 阅读 编码 牛儿 当我单击它时 按钮会更改其颜色并在屏幕上显示标题 我正在使用这个库 反应本机选择多个按钮 假设我单击了 跑步 和 骑行 按钮 这些按钮将突出显示 并且文本将显示在屏幕上 但是当我将
  • C#中如何通过socket发送文件

    我有服务器和客户端控制台应用程序 它们可以很好地通信并发送一些字符串 这是代码 Server public static void Main try IPAddress ipAd IPAddress Parse 127 0 0 1 Init
  • 使用自定义类加载器加载资源包

    import java io ByteArrayOutputStream import java io File import java io IOException import java io InputStream import ja
  • 启动 PyCharm 时 Dyld 错误消息

    几周来我一直在试图解决这个问题 但仍然陷入困境 我一直在研究它并慢慢获得更多信息 但还无法解决它 我在 Stack Overflow 上读过这些类似的问题 dyld 库未加载 usr local Cellar python 3 7 4 1
  • 如何访问多个文件的内容

    有什么方法可以添加多个文件的内容 然后将组合值放入一个文件中 我目前正在尝试这个 start tr include include all items item input start tr php img start include in
  • 如何从父 javascript 页面访问子 iframe 元素?

    在我的页面中 我有 iframe 代码 当我单击启用框架窗口的特定链接时 它是一个表单 当我提交表单时 我会得到一些隐藏字段值 我如何访问父页面中的这些值 由于您的 iframe src 完整的 url 而不是相对路径 即 app apps
  • 通过Javascript提交带有参数的表单

    下面是我的 Javascript 代码 其中 k 和 m 是 Javascript 变量 function javascriptfunction document forms formname action gotopage php par
  • Sublime Text 插件:添加 python 库

    我正在尝试编写一个 Sublime Text 插件 它可以进行一些 Windows api 调用 我做了一些研究发现这个Python库提供了我需要使用的API 所以 我正在尝试使用这个库 当我在我的 sublime text 插件中添加导入
  • 未捕获的类型错误:无法读取 null 的属性“lastChild”

    h2 Matching Game h2 p Click on the EXTRA face on the left side p
  • 在没有 /bin/bash 命令的情况下运行 docker 容器

    我创建了 docker 容器 sudo docker run it ubuntu bin bash 在我读过的 码头工人书 一书中 只要我们指定的命令 bin bash 正在运行 容器就会运行 我不是用选项 it 创建了终端并且不需要 bi
  • 如何在 angularjs 单元测试中触发 mousemove 事件

    我已经实现了一个使用鼠标事件的 angularjs 指令 单击组件并上下移动鼠标可以更改值 所以我需要知道如何在单元测试中触发 mousemove 事件 我使用 karma jasmine 我想建议在单元测试中当鼠标向上或向下移动时测试此组
  • 如何圆化 Matplotlib 轴脊柱的连接

    这是一个相当简单的问题 我正在创建一个具有多个插入轴的 Matplotlib 图形 我已删除刻度线 以便每个插入轴的插入脊椎以 90 度角相交 但是 当您向该图窗添加图例时 它会添加一个图例对象 该图例对象的每个 边缘 都有稍微圆形的脊柱连
  • Java 中的特定方法有多少字节的字节码?

    我最近读到乔恩 正光的博客巨大的方法 8000 字节的字节码 不是使用 HotSpot 进行 JIT 编译的 所以我的问题是 作为程序员 如何找出特定方法有多少字节的字节码 JIT 编译器似乎当然知道 我可以从 class file 您可以
  • Git忽略目录和目录/*有什么区别?

    我对忽略 git 中目录内容的正确方法感到困惑 假设我有以下目录结构 my project www 1 txt 2 txt gitignore 放置这个有什么区别 www 和这个 www 我问这个问题的原因是 在 git 中 如果目录为空