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

ant*_*009 43 git

git版本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目录中的所有当前文件相同.

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

非常感谢任何建议,

Ric*_*sen 52

如果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.cs或者S然后设置了'skip-worktree'位.您可以通过运行关闭'skip-worktree'位git update-index --no-skip-worktree source.c.
  • 你的索引已损坏.尝试删除.git/index(Git会根据需要重新创建).
  • 文件系统问题stat()无法正常工作.试试跑步git update-index --really-refresh.如果您的工作目录位于网络驱动器(NFS,sshfs等)上,请尝试将存储库移动到本地驱动器.


ham*_*mar 34

很难从给出的信息中分辨出什么是错误的,但是作为一种可以尝试的解决方法git add -f filename.c.这将添加文件,即使它将被忽略.

  • 这是正确的解决方案;我不知道为什么它不被接受。 (4认同)

Jan*_*nen 20

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

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

  • 请注意,`.git/info/exclude`和`core.excludesfile`配置变量引用的文件也可以包含忽略规则.但是,我相信Git打印一个友好的"你的文件没有添加,因为它被忽略了",如果它是一个忽略问题运行`git add`,这意味着它可能不是一个忽略问题. (2认同)
  • +1".gitignore"规则绊倒了我.我将一个文件复制到构建目录中,因此在构建时它可以正常工作,但在状态中没有出现. (2认同)

Bla*_*ack 11

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

打电话git status --ignored看看你的文件是否出现。


Vin*_*ula 10

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

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

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


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

例如:

$ git check-ignore -v config.php
.gitignore:2:src    config.php
Run Code Online (Sandbox Code Playgroud)

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

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

返回的格式为:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
Run Code Online (Sandbox Code Playgroud)

或使用以下命令打印您的.gitignorein user和repo文件夹:

cat ~/.gitignore $(git rev-parse --show-toplevel)/.gitignore $(git rev-parse --show-toplevel)/.git/info/exclude
Run Code Online (Sandbox Code Playgroud)

或者使用git add -f允许添加否则忽略的文件.

请参阅:man gitignore,man git-check-ignore了解更多详情.

/sf/answers/2024323661/


小智 5

可能是第 3 方应用程序更新了您的“ gitignore_global.txt”文件(~/.gitignore_global在 Linux / OS X 上)。这发生在我身上。我安装了“源树”并注意到 git 没有跟踪新文件。它发现“源树”更改了“gitignore_global.txt”文件,并添加了几个扩展名以不进行监视。尝试找到该文件并查看是否存在不应该存在的文件扩展名