gitignore 的问题

gitignore 的问题

这样.gitignore我希望目录下的 *.log 文件test不会包含在任何 git 事务中

:> cat ~/test/.gitignore
*/*/*.log
*/*/*__pycache__*
*/*/*out

然而,我的对话表明我的 gitignore 没有被定义为执行我期望的操作。

我的错误在哪里?我是否误解了对话,或者我的 .gitignore 是否不符合我的预期。

:> git add .
===
:> git status
On branch master
Your branch is up to date with 'origin/master'.
===
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
    new file:   ftp.log
===
:> git restore --staged ftp.log 
===
:> git status
Untracked files:
(use "git add <file>..." to include in what will be committed)
    ftp.log
nothing added to commit but untracked files present (use "git add" to track)

答案1

如果您只想排除该目录,test可以使用test以下命令将新的 .gitignore 添加到目录中:

*.log

您还可以替换当前的内容.gitignore

*/*/*.log

**/*.log

删除.log项目目录中所有文件的跟踪。

答案2

https://git-scm.com/docs/gitignore

尝试**/*.log

前导“**”后跟斜杠表示在所有目录中匹配。例如,“**/foo”在任何地方匹配文件或目录“foo”,与模式“foo”相同。 “**/foo/bar”匹配直接位于目录“foo”下的任何位置的文件或目录“bar”。

答案3

熟悉一下https://git-scm.com/docs/gitignore#_pattern_format

星号“*”匹配除斜杠之外的任何内容。

看起来您想要的*.log*/*/*/...;它将通配符匹配所有子目录中的所有 .log 文件。

.gitignore 匹配引用存储库根目录的文件,包括硬引用 ( /foo/bar) 和软引用 ( foo/bar)。

相关内容