首页 > 解决方案 > Git 不能正确检测某些文件的修改?

问题描述

我注意到 Git 没有正确检测到由 TI 的 Code Composer Studio (Eclipse) 生成的修改过的 .out 文件(它们已经在索引中)。编译/构建后,调用git status显示 .out 文件changes to be committed(已删除)而untracked files不是 in changes not staged for commit。知道是什么具体导致某些文件以这样的方式结束吗?

标签: gitsvnversion-controldvcscode-composer

解决方案


如果文件存在于当前提交中但不存在于索引中,则该文件的状态为“已删除”。

如果文件存在于工作树中但不在索引中,则该文件是未跟踪的。

在这种情况下,两者都是正确的:文件在当前提交中(永远冻结在那里,以及所有其他冻结到提交的文件),而不是在索引中(因为某人或某事将其从索引中删除) ,并且工作树中。鉴于您在此评论中的描述,IDE 可能已经运行git rm以从索引和工作树中删除文件,或者可能已经运行相当于git add -u在从工作树中删除文件之后但在重新创建文件之前工作树。

(该git add命令注意到工作树中缺少该文件,将从索引中删除该文件。随后git add,当文件在工作树中时运行会将其复制到索引中,但您需要它的一个变体git add添加了一个尚未出现在索引中的文件。)


推荐阅读