gpt4 book ai didi

git - .gitignore subdir/* 和 subdir/有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 14:10:19 25 4
gpt4 key购买 nike

test/test/build64/ALL_BUILD.vcxproj

使用以下模式忽略上面的文件:
build64/ 

但是,下面的模式不起作用。
build64/*

最佳答案

关键区别在于build64里面没有斜线。

我知道你真的写了 build64/build64/* , 和 build64/确实有斜线,但是 build64里面没有斜线,这就是区别所在。

看看the gitignore documentation并向下扫描到标题为 的部分图案格式 .请注意以以下开头的 Gist :

  • If the pattern ends with a slash, it is removed for the purpose of the following description ...


我认为,文本的其余部分非常困惑——太困惑了——但这里的关键是 build64/首先删除它的结尾斜线,这样它就不再有斜线了。所以现在,如果 Git 遇到一个名为 test/test/build64/ALL_BUILD.vcxproj 的文件, Git 将该名称分解为四个文件名组件,它们是:
  • test (第一个 testtest/test 中);
  • test (第二个 testtest/test 中);
  • build64 ;和
  • ALL_BUILD.vcxproj .

  • 是否 任何一个这四个组件的匹配 build64 ?为什么是的,第三个组件确实匹配 build64 .原版 build64有一个后缀斜杠,那么该组件是目录名而不是文件名吗?是的,它是:所以 test/test/build64/ALL_BUILD.vcxproj被规则 build64/ 忽略, 不包含斜线,除了不计算的结束斜线。

    另一方面,如果你写 build64/* , Git 不会删除斜杠,因此模式包含斜杠。 Git 分解全名 test/test/build64/ALL_BUILD.vcxproj和以前完全一样,但是这一次,它要求所有这些名称组件都匹配完整的模式。做 所有四个 的名称组件匹配 build64/* ?那么, build64/*build64 开头,第一个名称组件是 test .此 不匹配 所以整个比赛立即失败。

    请注意,如果您要写 test/test/build64/*作为您的 .gitignore行,Git 会匹配 test/test/build64/ALL_BUILD.vcxproj反对 test/test/build64/* .现在第一个组件 test必须匹配 test — 确实如此 — 第二个组件也必须匹配 test ,这当然也是如此。第三个组件必须匹配 build64最后一个组件, ALL_BUILD.vcxproj , 必须匹配 * .所有这些要求都得到满足,因此这将选择文件以使 Git 关闭未跟踪的状态。

    你也可以写 **/build64/* , 因为 **匹配任意数量的主要组件。这将匹配全名 test/test/build64/ALL_BUILD.vcxproj ,还有 build64/file , fred/build64/wilma , 和 fred/wilma/build64/betty .请注意,它不会匹配 fred/wilma/build64/barney/betty因为 barney/betty有太多的组件——但如果你匹配目录 fred/wilma/build64/barney , Git 可能永远不会费心去查看内部 fred/wilma/build64/barney/betty反正。

    在任何情况下,重要的是要记住 shell 样式的匹配一次完成一个文件名组件,除了 **火柴。 “所有必须匹配”规则由包含嵌入斜杠的 gitignore 模式触发;否则只有一个组件必须匹配。正如文档中几​​乎所说的,尾部斜杠是

    removed for the purpose of



    决定是使用“所有必须匹配”还是“只有一个必须匹配”规则。

    关于git - .gitignore subdir/* 和 subdir/有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52349749/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com