git - git 克隆后损坏的 Unity 项目

标签 git unity3d version-control git-lfs

我有一个 Unity 项目 ( github link ),它在克隆后不起作用。即使文件在那里,它们的内容也不正确。例如 .png 文件替换为文本:

version https://git-lfs.github.com/spec/v1 oid sha256:089f8198df161233681006c4243f6d6babb2e125062a21ea727d0d6c97889d26 size 1035

我从外部 Assets 包(例如 DOTween)获得的一些 DLL 也可能没有正确存储,因为编译器提示未声明的命名空间。

Assets/External Dependencies/Demigiant/DOTween/Examples/Basics.cs(3,7): error CS0246: The type or namespace name `DG' could not be found. Are you missing an assembly reference?

更新: 实际上,dll 甚至不存在。为什么?它们不是 gitignore 的一部分。

我已确保将 Version Control Mode 设置为 Visible Meta Files 并且 Assets 序列化模式强制文本

我尝试将项目移动到新目录,删除 .git 文件夹,删除 Library,重新制作所有内容(使用 Unity 重新打开,然后 git init),然后推到一个新的 repo 协议(protocol)。新的 repo 协议(protocol)与之前的 repo 协议(protocol)存在完全相同的问题。

我正在使用 default .gitignore for Unity

以及以下 .gitattributes(启用 LFS):

# 3D models
*.3dm filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.c4d filter=lfs diff=lfs merge=lfs -text
*.collada filter=lfs diff=lfs merge=lfs -text
*.dae filter=lfs diff=lfs merge=lfs -text
*.dxf filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.jas filter=lfs diff=lfs merge=lfs -text
*.lws filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
*.ma filter=lfs diff=lfs merge=lfs -text
*.max filter=lfs diff=lfs merge=lfs -text
*.mb filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.ply filter=lfs diff=lfs merge=lfs -text
*.skp filter=lfs diff=lfs merge=lfs -text
*.stl filter=lfs diff=lfs merge=lfs -text
*.ztl filter=lfs diff=lfs merge=lfs -text
# Audio
*.aif filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
*.it filter=lfs diff=lfs merge=lfs -text
*.mod filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.s3m filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.xm filter=lfs diff=lfs merge=lfs -text
# Fonts
*.otf filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
# Images
*.bmp filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.iff filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.pict filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
# Collapse Unity-generated files on GitHub
*.asset linguist-generated
*.mat linguist-generated
*.meta linguist-generated
*.prefab linguist-generated
*.unity linguist-generated

更新:

经过进一步调查,似乎 png 文件在克隆后打开项目时被覆盖(被统一?)。它们正确存在于远程存储库中。另一方面,外部 dll 根本不会上传。

最佳答案

你的 .gitattributes 文件是错误的。

*.png filter=lfs diff=lfs merge=lfs -text

文本?文本?究竟为什么要将 .png 文件视为文本?大多数其他属性也是如此。

查看我的自己的 .gitattributes 文件,我有这个:
(没错,大部分都是注释行)

###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

此文件是在我通过 GitHub 桌面应用程序创建 git 存储库时自动为我创建的。我听说它“不是很好”,但我发现它可以满足我的需要。即不要妨碍提交和推送到 GitHub。

关于git - git 克隆后损坏的 Unity 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659009/

相关文章:

linux - Git pull 权限被拒绝 linux?

c# - 让 child 不受 parent 轮换的影响 Unity

c# - 通用委托(delegate),C# 3.5

c# - 如何访问 UI 文本?

version-control - 发行说明和变更日志有什么区别?

git - 相对提交引用

python - 如何使用 jenkins 从私有(private) github 存储库安装 python 包?

git - Git 钩子(Hook)可以自动将文件添加到提交吗?

git - 如何删除没有指定分支的git中的提交?

version-control - Mercurial:有关修改文件的信息