【问题标题】:Why does GIT ignore tmp folders?为什么 GIT 会忽略 tmp 文件夹?
【发布时间】:2020-12-10 18:30:47
【问题描述】:

刚刚注意到(4 年后)git 似乎会自动忽略我项目的任何子目录中的任何 tmp 文件夹。现在,我对此很满意,但也让我担心:默认情况下它会忽略其他事情吗?

我的 .gitignore 确实有这样一行:

tmp/

但是,如果我删除该条目,我的所有 tmp 文件夹仍然会被忽略。

在我的 .gitignore 中没有其他提及“tmp” 我查看了其他文件,例如'.git/info/exclude' 和 '.git/config' 但在那里看不到任何东西。 我也看过:

git config --get core.excludesfile

它什么也不返回。

【问题讨论】:

  • 默认情况下仅忽略 .ignore 内容
  • 文件夹里有东西吗? GIT 不跟踪文件夹。它跟踪文件。如果文件夹为空,则没有可跟踪的内容
  • 我刚刚在本地尝试过,并没有被忽略。所以这个问题是基于一个错误的前提,因此无法回答
  • git status 将名为 tmp 的目录显示为未跟踪。这没有被忽视,只是未被追踪。
  • 忽略什么?你不能像 Liam 所说的那样向 git 添加文件夹。您只能添加文件。所以如果你尝试git addtmp文件夹中的一个文件,是不是不行?

标签: git tmp


【解决方案1】:

好的,感谢“Guy Incognito”我试过了:

git add bla/bla/tmp/bla.txt

这给出的信息是,我的 .gitignore 文件之一忽略了该路径。 所以我从我的 .gitignore 中删除了“tmp/”,现在 git 确实不会忽略 bla.txt(git status 显示它,git add . 添加它)。一些“tmp”文件夹仍然被“忽略”,但正如人们指出的那样(Liam),这些文件夹确实是空的。

好像有这样一行:

bla/

在 .gitignore 中将忽略任何子目录中名为“bla”的所有文件夹(及其内容)。我认为它会忽略任何顶级“bla”文件夹。

对此我感到非常惊讶,以至于我查了一下,这有点“微妙”:

bla/

在您的 .gitignore 中,将忽略 .gitignore 所在目录中所有名为“bla”的文件夹及其所有子文件夹。所以blafoo/bla 都将被忽略。不过

bar/bla/

在您的 .gitignore 中,只会忽略 bar/bla,但不会忽略 foo/bar/bla

顺便说一句。如果您只想忽略顶级文件夹,您可以使用:

/bla/

【讨论】:

  • 如果文件被忽略,git check-ignore -v 将找到导致此问题的特定指令,这有时非常方便。但是,如果您想弄清楚为什么某些 .gitignore 文件或行 工作,这将无济于事。
【解决方案2】:

Git 永远不会在工作目录中看到空文件夹。要添加临时文件夹,它必须包含 Git 跟踪的任何文件。如果您希望发送临时文件夹以便在 git-clone 之后立即可用,请将一个空的无意识文件放入该文件夹。此类文件的通用名称是.gitkeep。这对 Git 没有任何意义,但允许后者将文件夹存储在存储库中。

touch tmp/.gitkeep
git add tmp/.gitkeep

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 2020-10-25
    • 2018-06-25
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多