问题背景
近期 Engine/Build/Commit.gitdeps.xml 添加到Git LFS文件后(操作过程见下文的方法1),出现了一个奇怪的问题------git 拉取后 Engine/Build/Commit.gitdeps.xml 成为3行的LFS指针文件,文件内容如图2,文件大小是133B ,导致后续的 git dependencies 失败,报错如日志3。这个问题只出现在iOS的构建机上。
在.gitattributes 文件中添加如下文本,即可以将 Engine/Build/Commit.gitdeps.xml 置入到LFS文件的行列中了。
Engine/Build/Commit.gitdeps.xml filter=lfs diff=lfs merge=lfs -text
(方法1)

(图2)
Failed to read '/Users/mygame/EngineSource/Engine/Build/Commit.gitdeps.xml': System.InvalidOperationException: There is an error in XML document (1, 1). ---> System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1.
(日志3)
真相
最小复现操作指令如图4的[1]~[4] 步骤,由于 chmod 777 对 Commit.gitdeps.xml 进行了处理,导致此文件被git status 识别为变更。

(图4)
此时 git reset --hard HEAD ,就会损坏,因为lfs此时被卸载了。损坏后, git dependencies 无法正常工作,于是报错如日志3。
解决方法
下面两个思路中择其一就可以了。
1、把 lfs 安装上,然后 git lfs pull
2、让 该文件 重新恢复( lfs安装上之后 git checkout HEAD -- 该文件),撤销 chmod 的影响。