看不到添加到我的git工作目录的新文件

时间:2011-07-08 04:10:28

标签: git

git version 1.7.4.1

我在Ubuntu上使用git。

我已将其他目录中的一些文件复制到我的git工作目录中。通常会显示在Untracked files下。但是,他们没有出现。所以我不能添加它们。

当我执行git status时,新文件不会显示。

我尝试通过git add source.c添加它们然后尝试git status。该文件未显示。

所以我打开了文件,并以save as为同名。 git status仍然无法看到该文件。

我做了git ls-files,新文件显示正常。

我检查了文件权限,它们与我的git目录中的所有当前文件相同。

我之前从未遇到过这个问题。

非常感谢任何建议,

10 个答案:

答案 0 :(得分:48)

如果git ls-files显示source.c,那么它必须已经在索引中。这意味着它已被跟踪,并且可能已经提交。如果source.c中没有显示git status,则该文件必须已提交。

尝试修改文件以查看它是否在git status中显示为已修改。要真正说服自己该文件已签入,请运行git cat-file -p HEAD:source.c以查看签入文件的内容(有关git help revisions语法的文档,请参阅HEAD:source.c。)

此外,以下一项或多项可能属实:

  • 文件已被修改,但在索引中设置了'假设未更改'位。看一下git ls-files -v source.c的输出。如果第一列是小写字母,则设置“假定未更改”位。这样可以防止任何更改显示在git status中。您可以通过运行git update-index --no-assume-unchanged source.c来关闭“假设未更改”位。
  • 文件已被修改,但在索引中设置了'skip-worktree'位。如果git ls-files -v source.c的输出的第一列是sS,则设置'skip-worktree'位。您可以通过运行git update-index --no-skip-worktree source.c
  • 关闭“skip-worktree”位
  • 您的索引已损坏。尝试删除.git/index(Git会根据需要重新创建)。
  • 文件系统问题导致stat()无法正常工作。尝试运行git update-index --really-refresh。如果您的工作目录位于网络驱动器(NFS,sshfs等)上,请尝试将存储库移动到本地驱动器。

答案 1 :(得分:28)

很难说出所提供的信息有什么问题,但作为解决方法,您可以尝试git add -f filename.c。这将添加文件,即使它将被忽略。

答案 2 :(得分:17)

在黑暗中这真的是一个戳,但我偶尔会遇到类似的问题,这是其中一个案例:

  • .gitignore中有一条忽略文件的规则
  • 您复制的其中一个目录中有.git目录

答案 3 :(得分:9)

我创建了一个以image.gen结尾的包,它有一个以image / gen结尾的相应目录。并且有一个.gitignore条目,特定于Android gen /。

这导致文件没有被添加到git / git状态中显示。

检查下面,它帮助我解决了这个问题。

使用git check-ignore命令调试gitignore文件(排除文件)。

例如:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

以上输出详细说明了每个给定路径名(包括行)的匹配模式(如果有)。

所以也许你的文件扩展名不会被忽略,而是整个目录。

返回的格式为:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

或使用以下命令在user和repo文件夹中打印.gitignore

cat ~/.gitignore $(git rev-parse --show-toplevel)/.gitignore $(git rev-parse --show-toplevel)/.git/info/exclude

或者使用git add -f,允许添加其他被忽略的文件。

有关详细信息,请参阅:man gitignoreman git-check-ignore

https://stackoverflow.com/a/28918909/4082503

答案 4 :(得分:3)

可能是第三方应用程序更新了您的“gitignore_global.txt”文件(Linux / OS X上的~/.gitignore_global)。 它对我很开心。我安装了“源代码树”并注意到git没有跟踪新文件。 它发现“源代码树”更改了“gitignore_global.txt”文件,并将其添加到了不显示的几个扩展名。 尝试找到此文件,看看文件的扩展名是否存在,

答案 5 :(得分:3)

我遇到了同样的问题。 Git没有显示添加到我的项目中的任何新文件。

我是由以下原因引起的: 不知何故,我的项目的主文件夹被添加到“特定于存储库的忽略列表”(这就是在SourceTree中调用它)。 这是项目主文件夹根目录中的“.gitignore”文件。

在我删除“.gitignore”文件中的文件夹名称后,它才起作用。

答案 6 :(得分:2)

您的.gitignore文件很可能会忽略它。

致电git status --ignored,看看您的文件是否出现。

答案 7 :(得分:1)

删除.git / index文件就可以了。当我将骨架模块克隆到我的zf2项目中时,我似乎接触到了相当令人沮丧的错误。

答案 8 :(得分:1)

Android Repo - 我面临同样的问题 - 修正如下

不知怎的,我添加了"/app" in .gitignore file。现在删除"/app"之后就可以了。

请检查你的.gitignore。

答案 9 :(得分:1)

git config --global status.showuntrackedfiles all-旧案例的解决方案。您可以在终端中使用git status untracked-files=all,但是如果设置--global(上面的代码)的时间更长,则只需要git status,文件就会出现在未跟踪的位置。