这样.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
)。