【问题标题】:Why does Git ignore these folders?为什么 Git 会忽略这些文件夹?
【发布时间】:2026-01-20 13:35:01
【问题描述】:

我在 Git 下添加了一个 Laravel 应用程序,以便我可以推送到 Bitbucket。在根文件夹上,我运行git add -A 并推送到远程服务器上。我检查了它没有发送所有文件夹;例如,它根本没有添加vendor 文件夹。如何确保添加了所有子文件夹?当我运行git status 时,它会说:

# On branch master
nothing to commit, working directory clean

更新

我运行git status --ignore 并发现列出了以下文件:

stocktrack/app/storage/logs/laravel.log
stocktrack/app/storage/meta/services.json
stocktrack/app/storage/sessions/cdf664ccf42d040bc92d76418f736cc78e20d77a
stocktrack/app/storage/views/81774cd762e1fa0174ad42e0b0d53196
stocktrack/bootstrap/compiled.php
stocktrack/composer.lock
stocktrack/vendor/

.gitignore,我只添加了.idea。为什么它忽略了其他人?

【问题讨论】:

  • 注意:GIT_TRACE_EXCLUDE=1 git status 将很快(git 2.8,2016 年 3 月)成为调试 .gitignore 规则的另一种方式。见*.com/a/18953923/6309

标签: git git-status


【解决方案1】:

您可以使用git check-ignore 来确定路径是否被 git 忽略。

此外,check-ignore 提供了一个-v (--verbose) 选项,它会告诉您忽略文件的模式以及在哪里可以找到它。


假设您有一个具有以下目录结构的存储库。

bar/test/important
foo/a.tmp
foo/b

还有这个.gitignore 文件。

bar/
foo/*.tmp

您想知道为什么 bar/test/ 中的 important 文件会被忽略。

这是一个相当平淡的例子,但它只是为了展示这个概念。

现在让我们检查一下哪个模式忽略了您的 important 文件。

$ git check-ignore --verbose bar/test/important
.gitignore:1:bar/       bar/test/important

如您所见,check-ignore 告诉您bar/ 文件第 1 行的 .gitignore 模式忽略了相关路径。

【讨论】:

    【解决方案2】:

    git add --force <Specific Folder> 骗了我。

    【讨论】:

    • 那只是治标不治本。从根本上解决问题更有意义。看看my answer
    • 这不是一个永久的解决方案。问题将在下一个分支上再次出现。
    【解决方案3】:

    我遇到的问题,很可能是您遇到的问题,.git/info/exclude 中列出了这些文件夹。我不得不从那里删除它们。然后我跑了:

    1. git rm -r -f --cached .
    2. git add .

    【讨论】:

      【解决方案4】:

      看来.gitignore 有效。

      检查存储库的根目录。您会找到一个 .gitignore 文件,其中包含要忽略的文件名。

      【讨论】: