git之后没有未跟踪的文件忽略所有内容,除了
我有一个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中,还
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如何添加新文件?”同时。