我有一个Unity项目(github link),克隆后无效。即使文件存在,它们的内容也不正确。例如.png文件替换为文本:
版本https://git-lfs.github.com/spec/v1 oid sha256:089f8198df161233681006c4243f6d6babb2e125062a21ea727d0d6c97889d26 大小1035
我从外部资产包(例如DOTween)获得的一些DLL也可能无法正确存储,因为编译器会抱怨未声明的命名空间。
Assets / External Dependencies / Demigiant / DOTween / Examples / Basics.cs(3,7):错误CS0246:找不到类型或命名空间名称“DG”。你错过了装配参考吗?
更新 实际上,dll甚至不存在。为什么?他们不是gitignore的一部分。
我确保将Version Control Mode
设置为Visible Meta Files
和
Asset Serialization Mode
至Force Text
。
我尝试将项目移动到新目录,删除.git文件夹,删除Library
,重新构建所有内容(重新打开Unity,然后重新git init
),然后推送到新的仓库。新的仓库与前一个仓库有着完全相同的问题。
我正在使用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根本没有上传。
答案 0 :(得分:2)
您的.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。
答案 1 :(得分:0)
删除此部分的git clone来获取您的lfs文件。
# Collapse Unity-generated files on GitHub
*.asset linguist-generated
*.mat linguist-generated
*.meta linguist-generated
*.prefab linguist-generated
*.unity linguist-generated
git clone
在决定是否解析lfs文件之前先读取.gitattribute
文件。如果发现语法,则无法理解,将中止该过程。我认为linguist-generated
是非标准属性,导致您的存储库无法提取更改。
我不敢评论其他答案,但是-text
不是问题。
在gitattribute文件中,在属性之前添加-
会“取消设置”该属性。在这种情况下,意味着不要将其视为文本。
来自https://git-scm.com/docs/gitattributes:
“在路径上取消设置text属性会告诉Git不要尝试任何操作 签入或签出时的行尾转换。”
答案 2 :(得分:0)
您不应该使用 LFS 来跟踪 DLL 文件,它会导致您的 DLL 编译错误。
我也遇到了这个问题。错误:命名空间不存在。事实证明,没有下载包含该命名空间的 DLL。 DLL 包含符号链接文本。 C# 忽略了那个 DLL 并确实加载了符号 -> 编译失败。
您可以使用以下命令使DLL文件恢复正常:
git lfs untrack *.dll
git rm --cached *.dll
git add *.dll
git commit -m "add dll back to non-LFS files"
然后您重新结帐可以解决您的问题。
我的部分错误消息是:
<块引用>com.tencent.pandora.WsOPCancelSubscribe 类无法加载, 用于 Assembly-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null 类 com.tencent.pandora.WsOPCancelSubscribeAck 无法加载,使用 在 Assembly-CSharp 中,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsSendMsgAck 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsBarrageItem 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null 类 com.tencent.pandora.BulletWebSocket 无法加载,在Assembly-CSharp中使用,版本=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 c__Iterator0 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsEventData 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsEventScene 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsEventItem 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsTerminalPage 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsOPSubscribe 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsOPHeartBeat 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null 类 com.tencent.pandora.WsOPHeartbeatAck 无法加载,在Assembly-CSharp中使用,版本=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsOPCancelSubscribe 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null 类 com.tencent.pandora.WsOPCancelSubscribeAck 无法加载,使用 在 Assembly-CSharp 中,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsSendMsgAck 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsBarrageItem 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null 类 com.tencent.pandora.BulletWebSocket 无法加载,在Assembly-CSharp中使用,版本=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 c__Iterator0 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null com.tencent.pandora.WsEventData 类可以 未加载,用于Assembly-CSharp,Version=2.0.0.668, Culture=neutral, PublicKeyToken=null 类 com.tencent.pandora.WsEventScene 无法加载,用于 汇编-CSharp,版本=2.0.0.668,文化=中性, PublicKeyToken=null
如果有人遇到和我一样的问题,你可以检查一下你的 ProjectSettings.asset 文件,你不应该给它设置 LF 行尾,把它保留为 LFCR,我的问题就神奇地消失了。