gpt4 book ai didi

git - .gitignore 如何忽略目录中的一级文件而不是子文件?

转载 作者:太空狗 更新时间:2023-10-29 13:55:17 24 4
gpt4 key购买 nike

如果你有类似这样的文件结构?

foo
├── bar
│   ├── file1.coffee
│   ├── file2.coffee
│   └── file3.coffee
├── file1.js
├── file2.js
└── file3.js

如何忽略foo目录下的一级文件(file1.js, file2.js, file3.js) 但不要忽略 bar 目录中的所有内容(file1.coffeefile2.coffeefile3.coffee)

只要结构保持相同/相似,但文件名和扩展名当然会有所不同。

是否可以在每个目录没有自己的 .gitignore 和白名单的情况下执行此操作?文档似乎没有提到如何实现这一点。

最佳答案

使用 * 作为第一条规则也会忽略文件夹,并且:

It is not possible to re-include a file if a parent directory of that file is excluded. (*)
(*: unless certain conditions are met in git 2.?+, see below)

所以你需要在忽略第一级后将文件夹列入白名单。
然后将白名单文件夹下的所有内容列入白名单:

*
!*/
!*/**

或者,使用 Sven Marnach的变体,使用 /* 仅针对第一级的文件和文件夹:

/*
!*/

请注意,使用 git 2.9.x/2.10(2016 年年中?),如果文件的父目录被排除在外,则可能会重新包含该文件 if there is no wildcard in the path re-included .

Nguyễn Thái Ngọc Duy (pclouds)正在尝试添加此功能:

但是,由于重新收录的条件之一是:

The directory part in the re-include rules must be literal (i.e. no wildcards)

除非我们只讨论 foo 和 bar 文件夹,否则这在这里无论如何都行不通:

foo/
!foo/bar

关于git - .gitignore 如何忽略目录中的一级文件而不是子文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667449/

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