如何忽略目录中除一个文件以外的所有内容

Tus*_*eja 0 git

回购结构:

.gitignore
file1
file2
dir/
    file3
    <stuff>
Run Code Online (Sandbox Code Playgroud)

我想忽略dir文件3之外的所有内容。这是.gitignore文件中包含的内容:

dir/*
!dir/file3
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。git仍然尝试索引中的所有内容dir。我该如何解决?

更新 -删除旧的.gitignore文件并制作一个新文件后修复。新的不是使用制作的> .gitignore

May*_*ulC 5

正确的方法是:

!dir
dir/*
!dir/file3
Run Code Online (Sandbox Code Playgroud)

请注意,还有其他解决方案,例如在中创建本地.gitignore文件dir/,它将优先于前一个文件。

奇怪的是,我也尝试过您的解决方案,并且

dir/*
!dir/file3
Run Code Online (Sandbox Code Playgroud)

似乎为我工作。如果有人对此发表评论,将不胜感激。

  • 第二个有效,因为 dir/ 未被忽略。仅目录内容。您可以排除(取消忽略)其文件夹未被忽略的文件。 (2认同)