我有一个git存储库,如果我还没有在目录中添加文件,我希望git status
忽略所有目录(以及下面的所有内容)。将/*
添加到.gitignore
几乎可以解决问题。我可以创建新目录,将文件放入其中,git status
将完全无视。
然后我创建一个新目录并将文件放在那里,“目录/文件”。然后我git add directory
,git commit
,并在此目录中创建新文件,例如“directory / newfile”。问题是git status
不会向我显示新文件。
我尝试将!/*/*
添加到.gitignore
,但据我所知,它没有做任何事情。如何让git status
在包含跟踪(添加)的文件的目录中显示新文件,同时忽略没有跟踪文件的目录?
答案 0 :(得分:2)
其他答案谈论git不跟踪目录,这是正确的,但不回答问题。
首先,/*
不仅会忽略目录及其内容,还会忽略回购根目录中的文件。它忽略了一切。我不确定这是你想要的。如果没有,请尝试更改/*/
。
其次,git add directory
不适用于忽略模式。 git add
会失败,说道路被忽略,你必须使用-f
。是的,目录(及其内容)只能添加git add -f directory
。
现在,你已经添加并提交了目录,当你在其中放入一个新文件时,git status将不会显示你,因为当然,它被忽略了。 Git不会进入目录寻找未跟踪的文件。但是,当然,对已经跟踪的文件的修改将处于git状态。此外,git add directory/newfile
将失败,并显示有关使用-f
的相同消息。
因此,每次添加目录时,您还必须显式取消该特定目录的取消。因此,您必须向.gitignore添加类似!/directory
的内容。
答案 1 :(得分:0)
Git不会自己存储目录。文件路径是节点数据的属性,如果没有文件,则没有节点。如果'directory'为空,git add directory
在任何情况下都不会起作用。 git status
会将新创建的文件显示为未跟踪,除非您忽略它。试试git add directory/newfilename
,我不确定.gitignore是否会阻止显式添加,但我认为不会。如果是这样,你将不得不改变.gitignore以允许该目录(在线语法有很多关于语法的信息)。
答案 2 :(得分:0)
Git无法跟踪目录。它不会存储空目录,这就是为什么你经常在想要拥有“空”文件夹的项目中找到名为“.keep”的文件。