git之后没有未跟踪的文件忽略所有内容,除了

git之后没有未跟踪的文件忽略所有内容,除了,git,gitignore,Git,Gitignore,我有一个git文件夹,其结构如下: input/ src/ output/ additional-1/ additional-2/ file.csv file.txt input/ output/ file.txt 我的.gitignore当前看起来如下: input/ src/ output/ additional-1/ additional-2/ file.csv file.txt input/ output/ file.txt 已经有一些文件(特别是来自src/)添加到git中,还

我有一个git文件夹,其结构如下:

input/
src/
output/
additional-1/
additional-2/
file.csv
file.txt
input/
output/
file.txt
我的
.gitignore
当前看起来如下:

input/
src/
output/
additional-1/
additional-2/
file.csv
file.txt
input/
output/
file.txt
已经有一些文件(特别是来自
src/
)添加到git中,还有很多文件没有添加到git中。我已经注意到,除了一些目录/文件之外,我可能更容易忽略所有文件。因此,我遵循并将
.gitignore
正文替换为:

*
!src/*

(不确定哪个版本正确)

然而,现在当我打印
git status
时,我只从
src/
目录中获得修改过的文件,没有未跟踪的文件,而肯定有一些来自
src/
的文件尚未添加到git中。这是正常的行为吗?如果git status无法识别这些文件git如何添加新文件?或者,我是否应该根据以下内容以某种方式更改我的“所有除外”
.gitignore
版本?

可选前缀“!”否定模式;先前模式排除的任何匹配文件都将再次包含。如果文件的父目录被排除,则无法重新包含该文件。出于性能原因,Git不会列出排除的目录,因此包含的文件上的任何模式都不会产生任何影响,无论它们定义在何处

因此,这意味着,
*
模式排除了
src
文件夹,然后您尝试包含
src
文件夹中的一些文件-但根据文档,它将不起作用。 如果要包含的文件位于根目录中(与
.gitignore
文件处于同一级别),则可以跟踪它,而不考虑
*
模式。 例如,如果您有这样的存储库:

input/
src/
output/
additional-1/
additional-2/
file.csv
file.txt
input/
output/
file.txt

而您的
.gitignore
文件将是:

*
!D.txt
然后,将跟踪
D.txt
文件


因此,您的问题的解决方案将是从
.gitigore
文件中删除
*
模式;然后在那里添加每个你想忽略的目录,然后指定你想从
.gitigore
中排除的文件(你想跟踪的)。

你能更清楚地说明你想要达到的最终结果吗?例如:我不明白如何理解“忽略除某些目录/文件之外的所有文件可能会容易得多”(您这样做了)和“如果git状态无法识别这些文件,那么git如何添加新文件?”同时。