我陷入了一种奇怪的情况,在我的一个分支中,web.config 文件无法添加到舞台上。的输出
git add path/to/web.config
git status
与添加文件之前相同。 Web.config 似乎需要修改,并且尚未添加到舞台中。
也许更有趣的是,当我从文件系统中删除 Web.config 并运行git status
我得到的输出表明我有两个web.config准备删除且未暂存的文件。
# Changes not staged for commit:
# deleted: path/to/Web.config
# deleted: path/to/web.config
请注意,一个是大写 W,另一个是小写 w。我在实际文件系统上删除的文件是大写的“W”。
Edit 1
的输出git ls-files --stage
显示索引中确实存在两个大小写不同的文件。
100644 63cd5911b9b12bbad559bb69b1b596708b932061 0 path/to/Web.config
100644 d60ab44bb38f05ffce126ddd3c3293b06e6e4096 0 path/to/web.config
我将其中每一个输出到一个文件中git cat-file -p <hash> > <file>
并比较了两个文件。虽然文本内容相同,但大写的 Web.config 包含 CRLF 结尾,小写的 web.config 包含小写结尾。
Edit 2
从文件系统中物理删除文件git reset HEAD
产生此输出,但文件未在文件系统上恢复,因此无法添加。
Unstaged changes after reset
D path/to/Web.config
D path/to/web.config
我希望工作目录中的文件具有 CRLF,因为我在 Windows 上工作,但我希望文本文件在内部 Git 数据库中以 LF 存储。所以,我假设是 63cd591,但我可能在这里偏离了基础。
在这种情况下,如何从索引中永久删除 path/to/web.config ?我使用的是 Windows,路径上不能有两个仅大小写不同的文件。