我正在创建一个包含 PDF 图像的 LaTeX 文档;所以,我想忽略生成的 PDF,而不是源 PDF。我实际上已经设法做到这一点,但我尝试的第一件事没有奏效,我想知道为什么。
文档部分说:
从与路径相同的目录或任何父目录中的 .gitignore 文件读取的模式,较高级别文件(直到工作树的顶层)中的模式被低级别文件中的模式覆盖到目录包含文件。这些模式与 .gitignore 文件的位置相匹配。项目通常在其存储库中包含此类 .gitignore 文件,其中包含作为项目构建的一部分生成的文件的模式。
...但我似乎无法让更深的.gitignore
文件覆盖更浅的文件。这是一个简单的命令序列来重现我所看到的:
~% mkdir git-test
~% cd git-test
~/git-test% git init
Initialized empty Git repository in /home/dmwit/git-test/.git/
~/git-test% echo '*.pdf' >.gitignore
~/git-test% mkdir images
~/git-test% touch images/.gitignore
~/git-test% git add .gitignore images/.gitignore
~/git-test% git commit -m "example .gitignore files"
[master (root-commit) 8c7e91d] example .gitignore files
2 files changed, 1 insertion(+)
create mode 100644 .gitignore
create mode 100644 images/.gitignore
~/git-test% touch images/foo.pdf
~/git-test% git status
# On branch master
nothing to commit, working directory clean
为什么在此之后工作目录是干净的?.gitignore
中的空文件不应该git-test/images/
覆盖中的文件images/
,导致该目录中的任何内容都不会被忽略吗?(另外,对于它的价值,删除后git-test/.gitignore
,新的pdf
确实出现在 中git status
,所以我不相信我的任何全局排除会影响这一点。)