无法重置Git中的文件

时间:2014-08-20 09:22:54

标签: git git-diff

我的讨论可能与此类似: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上使用过某些项目,但我还不知道所有的命令。

3 个答案:

答案 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