2

我有一个 git 存储库,git status如果我还没有在目录中添加文件,我想忽略所有目录(以及下面的所有内容)。添加/*.gitignore几乎可以解决问题。我可以创建新目录,将文件放入其中,然后git status完全忘记。

然后我创建一个新目录并将一个文件放在那里,“目录/文件”。然后我git add directory, git commit, 并在此目录中创建一个新文件,例如“directory/newfile”。问题是它git status不会向我显示新文件。

我尝试添加!/*/*.gitignore但据我所知它没有做任何事情。如何git status在具有跟踪(添加)文件的目录中显示新文件,同时忽略没有跟踪文件的目录?

4

3 回答 3

2

其他答案谈论 git 不跟踪目录,这是正确的,但不要回答问题。

首先,/*不仅会忽略目录及其内容,还会忽略 repo 根目录中的文件。它忽略了一切。我不确定这是你想要的。/*/如果没有,请尝试更改它。

其次,git add directory不会使用忽略模式。git add如果说路径被忽略并且您必须使用-f. 是的,目录(及其内容)只能添加git add -f directory

现在,您已经添加并提交了目录,当您将新文件放入其中时, git status 不会向您显示,因为当然,它被忽略了。Git 不会进入目录查找未跟踪的文件。但是,当然,对已跟踪文件的修改将进入 git 状态。此外,git add directory/newfile将失败并显示有关使用的相同消息-f

因此,每次添加目录时,您还必须明确取消忽略该特定目录。所以你必须在!/directory你的 .gitignore 中添加类似的东西。

于 2011-10-08T21:34:06.607 回答
0

Git 本身不存储目录。文件路径是节点数据的一个属性,没有文件就没有节点。 git add directory如果 'directory' 为空,则在任何情况下都应该无效。git status会将新创建的文件显示为未跟踪,除非您将其忽略。试试看git add directory/newfilename,我不确定 .gitignore 是否会阻止显式添加,但我认为不会。如果是这样,您必须更改 .gitignore 以允许该目录(网上有很多关于语法的信息)。

于 2011-10-08T07:50:40.233 回答
0

Git 无法跟踪目录。它不会存储空目录,这就是为什么您经常在想要拥有“空”文件夹的项目中找到名为“.keep”的文件的原因。

于 2011-10-08T08:54:37.560 回答