如何向 .gitignore 添加一些内容以使匹配不递归?

发布于 2024-08-25 13:53:46 字数 370 浏览 7 评论 0原文

如何向 .gitignore 添加一些内容以使匹配不是递归的?

例如,我希望忽略当前目录中的目录 foo 和文件 bar.txt,但不忽略子目录中存在的任何文件。

我已经为我的 .gitignore 文件尝试过这个:

foo/
bar.txt

但不幸的是 git 递归地应用这个,因此 otherdir/bar.txt 和 otherdir/foo/也被忽视,这不是我想要的。

(git 中是否有一个命令可以显示所有被忽略的文件,并引用导致该文件被忽略的 .gitignore 文件?这对于调试很有用。)

How to I add something to the .gitignore so that the match is not recursive?

For example, I wish to ignore the directory foo and the file bar.txt in the current directory, but not any that exist in subdirectories.

I have tried this for my .gitignore file:

foo/
bar.txt

But unfortunately git applies this recursively, so that otherdir/bar.txt and otherdir/foo/ also get ignored, which is not what I want.

(Is there a command in git that shows me all ignored files, and reference the .gitignore file that is responsible for the file being ignored? This would be useful for debugging.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走干脆点 2024-09-01 13:53:46

解决方案是在 .gitignore 条目上放置一个前导斜杠:(

/foo/
/bar.txt

我以为我在 StackOverflow 上发布之前尝试过此操作,但显然我没有正确尝试过,因为这非常有效。)

The solution is to place a leading slash on the .gitignore entries:

/foo/
/bar.txt

(I thought I tried this before posting on StackOverflow, but clearly I hadn't tried it properly, as this works perfectly.)

隔纱相望 2024-09-01 13:53:46

来自 gitignore 联机帮助页:

可选前缀!这否定了模式;先前模式排除的任何匹配文件将再次包含在内。如果否定模式匹配,这将覆盖优先级较低的模式源。

因此 !* 作为 .gitignore 中的第一行将清除所有以前的模式。

From the gitignore manpage:

An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again. If a negated pattern matches, this will override lower precedence patterns sources.

So !* as the first line in your .gitignore will clear all previous patterns.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文