Git忽略未列在.gitignore、exclude或config文件中的目录。

6

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

这是一个使用gradle构建的Android Studio项目,我的版本控制系统是Git。 我使用SourceTree和GitBash来管理代码库。 我已将所有.ignore文件重置为空,\info\exclude为空,而且config没有'excludesfile'属性。

被忽略的文件夹是'myProj/app/src/debug/res/raw/', 我不知道这个文件夹最初是如何被忽略的。 有一个不同的相对文件夹'myProj/app/src/debug/res/values'被Git跟踪。

是否还有其他地方设置了忽略文件? 是否有任何git命令可以显示这个文件夹被设置为被忽略的位置? 也许有一个二进制文件我忽略了可以直接删除?

当前运行'git status --ignored'只显示'myProj/app/src/debug/res/raw/'被忽略。


2
文件名为.gitignore。你确定你在正确的地方查找吗? - Alexey Ten
1
请注意,.gitignore 文件可能存在于任何目录中,而不仅仅是父目录,因此请检查存储库中所有名为 .gitignore 的文件。 - Anshul Goyal
2
为了确保您没有全局的gitignore文件:git config --get core.excludesfile是否返回任何内容? - jub0bs
谢谢Alexey,我当然是指.gitignore,我已经编辑了标题。 - Alon Eirew
我也遇到了同样的问题——build/没有被忽略,也不在我的core.excludesfile中!使用“add -f”解决了问题,但我仍然感到困惑,不知道这是怎么发生的。 - vapurrmaid
4个回答

18

使用 git check-ignore -v myProj/app/src/debug/res/raw/ 命令查看忽略的位置。也许您需要给出该目录中文件的名称而不是目录本身。


谢谢!有趣的是,还有另一个gitignore(由“GitHub for Mac”设置!)它在查看。它在“〜/ .config / git / ignore”中。我使用了@Alan的解决方案来强制执行它。 - Anupam

4

感谢大家的快速回应,

我最终通过以下方法解决了问题:

  • 使用以下命令添加文件夹:git add -f myProj/app/src/debug/res/raw/

然后提交和推送,这本来是一个临时解决方案,直到找到真正的解决方案,但它起了作用,之后该文件夹开始被跟踪。


在这样做之后,该文件夹开始被跟踪,这将会发生。Git 的忽略系统仅适用于未被跟踪的文件。通过使用 git add -f 命令,您告诉 Git 开始跟踪该内容,因此该内容上的任何忽略规则都不再适用。您可能仍然有一条错误的规则。 - Chris
这对我也解决了,而且没有错误规则。在整个代码库的全局搜索中找不到任何东西。git check-ignore也不显示它在.gitignore中。只有在我添加一个空文件夹,然后稍后再添加文件时才会发生这种情况。 - Douglas Gaskell

3
请注意,您的规则可能还存在于.gitignore_global文件中(位于您的用户文件夹中)。您可能会意外地通过在SourceTree中选择“添加此忽略条目到”下拉菜单中的“全局忽略列表”,而将其添加进去。 不要这样做! 通常情况下,您不希望将文件夹名称添加到全局忽略列表中。

1
Git默认没有全局忽略功能。可以通过设置core.excludesfile选项来配置。SourceTree可能会为您启用此选项。 - Chris

2
我知道这个问题已经有5年了,但它是谷歌搜索结果中的第一个。
除了之前提到的可能性外,另一个可能性是该文件夹被添加为子模块。例如,在GitHub中,底部文件夹是一个子模块:

Example

最近我在将一个完整的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. 添加&提交以删除仓库中的子模块。
  3. 删除移动后的 ignored_folder 中的 .git 文件夹。
  4. ignored_folder 移回原处。
  5. 添加&提交。

然而,我相信有更好的类似于 git 的解决方案


我犯了同样的错误,这个修复方法对我有效。我找不到.submodules文件,也没有在.git/config中列出相关文件夹。但是复制-推送-粘贴-推送的方法解决了问题。 - Stonecraft
删除被忽略的文件夹中的.git文件夹就足够了。 - MrE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接