【问题标题】:Git ignores directory that is not in .gitignore, exclude or config fileGit 忽略不在 .gitignore、排除或配置文件中的目录
【发布时间】:2015-04-09 04:27:59
【问题描述】:

我的项目中有一个目录被忽略,但它不在我期望忽略的文件夹所在的任何位置(.gitignore、exclude 或 config)。

这是一个我用 gradle 构建的 Android Studio 项目,我的 VCS 是 Git。 我正在使用 SourceTree 和 GitBash 来管理存储库。 我已将项目中的所有 .ignore 文件重置为空,\info\exclude 为空且配置没有 'excludesfile' 属性。

被忽略的文件夹是 - 'myProj/app/src/debug/res/raw/' 不知道这个文件夹是如何被忽略的。 git 跟踪了一个不同的相对文件夹“myProj/app/src/debug/res/values”。

还有其他地方我没看过设置忽略文件吗? 是否有任何 git 命令可以显示此文件夹在哪里设置为忽略文件夹? 也许我忽略了一个我可以删除的二进制文件?

当前运行的“git status --ignored”仅显示“myProj/app/src/debug/res/raw/”被忽略。

【问题讨论】:

  • 文件名为.gitignore。你确定你找对地方了吗?
  • 请注意,gitignore 可能存在于任何目录中,而不仅仅是父目录,因此请检查您的存储库中名为 .gitignore 的所有文件。
  • 只是为了确保您没有全局 gitignore 文件:git config --get core.excludesfile 是否返回任何内容?
  • 感谢 Alexey,我的意思当然是 .gitignore,我已经编辑了标题。
  • 我刚刚遇到了同样的问题 - build/ 不在任何忽略或我的 core.excludes 文件中! add -f 解决方案有效,但我仍然对这是如何发生的感到困惑

标签: android git android-studio git-bash atlassian-sourcetree


【解决方案1】:

使用git check-ignore -v myProj/app/src/debug/res/raw/ 查看忽略的位置。您可能必须为其指定该目录中的文件名,而不是目录本身。

【讨论】:

  • 谢谢!有趣的是,它正在查看另一个 gitignore(由GitHub for Mac 设置!)。它位于~/.config/git/ignore。我使用@Alan的解决方案来强制它
【解决方案2】:

感谢大家这么快回复,

我最终解决了这个问题,只需使用以下方法添加文件夹:

  • git add -f myProj/app/src/debug/res/raw/

然后提交并推送,这应该是一个同时的解决方案,直到找到真正的解决方案,但成功了,之后开始跟踪文件夹。

【讨论】:

  • “在开始跟踪文件夹之后”,它会的。 Git 的忽略系统仅适用于未跟踪的文件。通过使用git add -f,您告诉 Git 开始跟踪该内容,因此对该内容的任何忽略规则都不再适用。不过,您可能仍然有一个错误的规则。
  • 这也为我解决了,并且没有错误的规则。对整个 repo 进行全局搜索一无所获。 git check-ignore 并没有显示它在 .gitignore 中。仅当我添加一个空文件夹并稍后向其中添加文件时才会发生这种情况。
【解决方案3】:

请注意,您的规则也可能存在于.gitignore_global 文件中(在您的用户文件夹中)。您可能不小心在 SourceTree 的“将此忽略条目添加到”下拉列表中选择了“全局忽略列表”。

您通常不想将文件夹名称添加到全局忽略列表中

【讨论】:

  • Git 默认没有全局忽略。这是使用core.excludesfile 选项配置的。 SourceTree 可能会为您启用此选项。
【解决方案4】:

我知道这个问题已有 5 年历史,但它是 Google 搜索结果中的第一个问题。

除了前面提到的之外,另一种可能性是该文件夹已被添加为子模块。例如。在 GitHub 中,最下面的文件夹是一个子模块:

这发生在我最近将整个 git 项目复制到另一个项目中时。也就是说,我的仓库是这样的:

repo
|
|__ .gitignore
|__ .git/ #git folder for repo
|__ some_files.ext
|
|__ ignored_folder
     |__ .git/ #git folder of the copied repo
     |__ .gitignore
     |__ some_other_files.ext

我的具体解决方案是:

  1. 将整个 ignored_folder 剪切到存储库之外。
  2. Add&commit 删除 repo 中的子模块
  3. 删除已移动的ignored_folder 中的.git 文件夹。
  4. ignored_folder 移回。
  5. 添加并提交。

不过,我确定有much better git-like solutions

【讨论】:

  • 我犯了同样的错误,这个修复对我有用。我找不到 .submodules 文件,.git/config 中也没有列出有问题的文件夹。但是复制-推送-粘贴-推送方法修复了它。
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2011-09-30
  • 1970-01-01
  • 2021-08-15
相关资源
最近更新 更多