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目录中的所有当前文件相同。
我之前从未遇到过这个问题。
非常感谢任何建议,
答案 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
来关闭“假设未更改”位。git ls-files -v source.c
的输出的第一列是s
或S
,则设置'skip-worktree'位。您可以通过运行git update-index --no-skip-worktree source.c
。.git/index
(Git会根据需要重新创建)。stat()
无法正常工作。尝试运行git update-index --really-refresh
。如果您的工作目录位于网络驱动器(NFS,sshfs等)上,请尝试将存储库移动到本地驱动器。答案 1 :(得分:28)
很难说出所提供的信息有什么问题,但作为解决方法,您可以尝试git add -f filename.c
。这将添加文件,即使它将被忽略。
答案 2 :(得分:17)
在黑暗中这真的是一个戳,但我偶尔会遇到类似的问题,这是其中一个案例:
答案 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 gitignore
,man git-check-ignore
。
答案 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
,文件就会出现在未跟踪的位置。