我的讨论可能与此类似:Git status shows files as changed even though contents are the same。虽然我的问题是,工作目录中的文件完全相同。我已经完成了那些检查:
git checkout-index <file> --temp
hexdump <tempfile>
hexdump <file>
两者完全相同。我也从上面问题的答案中尝试了这个:
git show HEAD:<file>|md5sum
md5sum <file>
它们也是完全相同的哈希。
我还尝试以多种方式撤消更改:
git reset --hard
git checkout -- <file>
git checkout HEAD <file>
但没有任何帮助。该文件仍在git status
输出中显示为已修改。我甚至删除了该文件并将其从另一个文件夹中复制过来,其中克隆了相同的repo。仍然没有成功。
更令人困惑的是:指令仅用于已部署的系统。回购之前克隆了最小的突然之间,而且突然间,甚至没有以任何方式触及那个特定文件,它显示为变化。因此,我无法再对此目录执行git pull
,因为它告诉我,我有未分阶段的更改。
是否有任何特殊技巧,我可以强制Git将文件视为未更改?
P.S。我是Git的新手,刚刚从SVN迁移了一周。虽然我之前曾在Git上使用过某些项目,但我还不知道所有的命令。
答案 0 :(得分:3)
事实证明,删除带有以下内容的.gitattributes
文件会导致问题:
*.css eol=lf
但它仍然毫无意义,因为没有任何文件被触及过。所以这个问题并没有真正解决,但删除.gitattributes
文件至少会再次显示正确的状态。
答案 1 :(得分:0)
首先,从以下命令开始:
git reset --hard HEAD
接下来,使用此命令查看不同文件的列表。如果它显示任何文件,git认为这些文件有变化。
git status
最后,如果您想完全覆盖本地更改,请执行以下步骤:
git reset --hard HEAD
git clean -xdf
git pull
答案 2 :(得分:0)
我有同样的问题。我从字面上执行
git reset --hard
连续十次,它消失了。
另一种选择是停止跟踪文件
git update-index --assume-unchanged path/to/file
重新开始对其进行跟踪。
git update-index --assume-unchanged path/to/file