昨天合并分支后,突然出现了项目中全部的文件出现异常。
先说结论:合并导致文件冲突处理异常,Git lfs 异常
解决方式:CMD 中执行 git lfs install git lfs pull。
合并分支后,发现项目中全部的png异常,编译app失败。
因为编辑器报错,可以定位到png的异常,就用原来正常的图片替换了异常的图片。一场图片不可以预览,且只有100多字节,可以明显 的看到异常。
然后编译还是失败,ide明确的报错定位到是哪个jar,检查后发现也是jar异常,由于jar包不好定位什么问题,最后也是发现jar文件100字节。
最后也是替换了正常的jar包。
正常打包,以为正常了。
今天开始构建Unity项目时,也出现了问题。
全部的png,tag ,jpg ,fbx …全部G了。我慌了。
git 对比文件是没有本地变更的。项目组的其他成员也是没有问题的。又是我一个人。
ChatGPT -
Git默认会尝试合并所有文件,包括二进制文件,如图片和jar文件。如果你在合并过程中遇到冲突,并且这些文件被错误地合并或解决冲突,那么它们可能会损坏。在这种情况下,你可能需要逐个手动检查和恢复这些文件。你可以使用git
checkout命令来恢复到某个版本的文件。假设你想恢复到合并前的版本,你需要找到那个版本的提交哈希值。例如,如果你想恢复名为image.png的文件,你可以这样做:
git checkout [commit_hash] – path/to/image.png Bash
在上面的命令中,[commit_hash]是你希望恢复到的版本的提交哈希值。如果你不记得这些文件在哪个提交中更改,你可以使用git log命令来查看提交历史,或者使用git log –
path/to/file来查看特定文件的历史。未来,为了避免这种情况,你可以使用.gitattributes文件来告诉Git如何处理这些文件。在这个文件中,你可以设置Git对某些类型的文件不进行合并,而是保留在分支中的版本:
*.png binary
*.jpg binary
*.jar binary Plain text 以上配置告诉Git,对于png、jpg和jar文件,要把它们当作二进制文件处理,而不是尝试去合并它们。
冷静下来了,分析问题。项目是使用了lfs的,八成是项目中的.gitattributes异常,查看正常。
然后看看是不是lfs 设置异常。最后定位,lfs 没有install。执行
git lfs install
在执行
git lfs pull
文件恢复正常。