撤消 git-lfs 中的本地更改

Undo local changes in git-lfs

我有一个包含本地更改的 git-lfs 存储库,我想丢弃它们。我尝试了以下命令但没有成功:

git checkout file

git checkout -- file

git lfs checkout file

git reset --hard

我应该使用什么命令?

谢谢!

编辑:

查看 gitk 的修改显示所有文件的 r/w 属性都已更改。内容相同。

-------------------- .gitattributes --------------------
old mode 100644
new mode 100755

也尝试了这里提到的建议但没有成功: Unstaged changes left after git reset --hard

TL;DR

您可能手动将 core.fileMode 设置为 true。将其设置回 false.

Viewing the modifications with gitk revealed that r/w attributes were changed for all files. Contents are identical.

-------------------- .gitattributes --------------------
old mode 100644
new mode 100755

git reset --hard 也会尝试 更改模式。显然这次尝试失败了,也许没有报告任何错误。

这种行为在 DOS/Windows-style 文件系统上很常见,其中根本不支持 +x 和 -x 模式。一些适配器将所有文件报告为模式 644 (rw-r--r--),而一些适配器将所有文件报告为模式 755 (rwx-r-xr-x);看来你是第二种。

Git 通常 检测并针对这些类型的文件系统进行自我调整:在创建存储库时,Git 会做一些“创建一个文件并更改其模式”测试。如果模式从 +x 变为 -x and/or 反之亦然,Git 认为 OS 和文件系统 do 支持模式,因此它设置了一个配置设置:

core.fileMode true

如果遵守这些更改,Git认为OS和文件系统支持模式,因此设置相反的设置:

core.fileMode false

请注意,此设置 core.filemode(有时采用混合驼峰式大小写,有时全部小写:Git 在这里是 case-insensitive,但其他地方不是)告诉 Git 你的系统是如何工作的。它不控制系统,它只是报告先前的观察

如果您手动 更改 这个变量,您就是在告诉 Git 您已经更换了操作系统 and/or 文件系统,并且它现在以另一种方式工作。如果您确实替换了 OS and/or 文件系统并且 以另一种方式工作,那么您的新设置是正确的。但如果不是,你现在已经撒谎 Git.

或者,您可以将整个 .git 存储库和工作树移至新的文件系统。当您这样做时,根据您的特定 OS 和文件系统,旧的 core.fileMode 设置现在可能不准确。 Git 不会知道这一点—Git 会相信旧设置。通过移动文件,您实际上是在欺骗 Git,但在这种情况下您可能没有任何理由怀疑类似的事情。

在这两种情况下,解决方法是纠正谎言:通过适当地将 core.fileMode 设置为 falsetrue 来告知 Git 文件系统的实际工作方式.一旦设置正确,Git 将知道是否假定它看到的属性设置有效 (core.fileMode true),因此您会看到这种变化,或者不会 (core.fileMode false) 和因此你不会看到这种变化。