der*_*ugo 6 git github unity-game-engine git-lfs
我正在Unity3D
Unity17.2.1中开展一个项目
我在Windows 10上使用git Git-LFS
和SourceTree
.
在我的本地克隆一切正常.
但是如果我在一个新文件夹中克隆项目(用于测试),我会遇到很多错误.它可以LFS
很好地下载大多数文件轨道,但对于其中一些我得到:
下载对象时出错:Assets/VRITM/_Prefabs/SceneGraph/NetworkManager/DebugHUD/ConfigurationPanel/InputField.prefab(3a0c39040b397ab7120d427e019ad767b2bd6b91386856f9730507be1b59ad3c)
我可以以某种方式在本地恢复"复制"(新克隆的)项目,因为我已将整个Assets-Folder从我的工作本地克隆导出为unitypackage.
但在这样做之后,git仍然声称它是"最新的"所以我不能再次提交/推送.
如何修复远程存储库(github)上的LFS跟踪文件?
因为我已经在我的本地克隆上工作正常了所以我想必须有某种方式来"强制" git-lfs
上传所有文件,就像我拥有它们一样.
另外,我有两个在合并之前重命名的脚本:
在主服务器上它是
DebugHUDManager.cs
ConfigurationHUDManager.cs
Run Code Online (Sandbox Code Playgroud)
但我将类和文件重命名为
DebugHudManager.cs
ConfigurationHudManager.cs
Run Code Online (Sandbox Code Playgroud)
所以在我的本地(工作)克隆中我有后来当我新克隆时我得到以前的文件(..HUD ..)因此GameObject只附加了缺少的脚本.我可以通过再次重命名文件来解决这个问题.但这也没有在git中跟踪.它一直说"最新".
这是我的.gitattributes:
# Unity
*.cginc text
*.cs diff=csharp text
*.shader text
# Unity YAML
*.anim merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.mat merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
# Unity LFS
*.cubemap filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
# Image
*.ai filter=lfs diff=lfs merge=lfs -text
*.apng filter=lfs diff=lfs merge=lfs -text
*.astc filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text
*.eps 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
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.ktx filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.pvr filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
*.svgz 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
*.webm filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
# Audio
*.aif filter=lfs diff=lfs merge=lfs -text
*.m4a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
# Video
*.asf filter=lfs diff=lfs merge=lfs -text
*.avi filter=lfs diff=lfs merge=lfs -text
*.flv filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mpeg filter=lfs diff=lfs merge=lfs -text
*.mpg filter=lfs diff=lfs merge=lfs -text
*.ogv filter=lfs diff=lfs merge=lfs -text
*.wmv filter=lfs diff=lfs merge=lfs -text
# 3D Object
*.blend filter=lfs diff=lfs merge=lfs -text
*.dxf filter=lfs diff=lfs merge=lfs -text
*.fbx 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
# Compressed Archive
*.7z filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
# Compiled Dynamic Library
*.dll filter=lfs diff=lfs merge=lfs -text
*.pdb filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
# Compiled Static Library
*.a filter=lfs diff=lfs merge=lfs -text
*.la filter=lfs diff=lfs merge=lfs -text
*.lai filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
*.llblgenproj filter=lfs diff=lfs merge=lfs -text
# Font
*.otf filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
# Executable/Installer
*.apk filter=lfs diff=lfs merge=lfs -text
*.exe filter=lfs diff=lfs merge=lfs -text
# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text
# Other
*.reason filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)
在一些巨大的合并后问题开始了.
我没有UnityYamlMerge.exe
激活Unity的Smart-Merging .(我现在加了.)
所有丢失的文件都是类型.prefab
和.unity
.在合并之前,所有这些似乎都是我最新提交的一部分.但其他.prefab
文件下载正常.
此外,大小似乎并不重要,因为大多数都有10Kb,而一些.prefab
下载良好的文件有例如1,9Mb.
资产序列化模式= 强制文本
我刚刚用一个新.prefab
文件做了另一个测试提交.这很好用.唯一不起作用的是.prefab
合并添加/更改的特定文件.
我该如何解救这个项目?OO
更新:
同时我创建了一个新的存储库并从我工作的本地克隆中复制了文件(包括.git文件夹的文件).但是当然新存储库中的历史记录已经消失了.但至少我们可以继续合作.
我知道您已经解决了合并问题,但我想记录我对同一问题的修复。也就是说,我尝试将 LFS 跟踪合并.prefabs
到 master 中,但文件要么已损坏,要么链接错误,无论哪种方式都不会在合并后加载到 Unity 项目中。
看到.gitattributes
上面的文件后,我意识到问题是 SmartMerge (UnityYAMLMerge) 没有处理合并,因此文件当然不会合并。这就是我所做的:
首先,我重置了 master,然后确认 Unity 中的一切仍然有效
\ngit reset --hard origin/master\n
Run Code Online (Sandbox Code Playgroud)\n其次,我使用与您类似的设置.gitattributes
更新了我的文件,有效地将所有内容移出 LFS,以便可以由 UnityYAMLMerge 处理它们。.prefabs
第三,我将更改提交给master。
\n完成此操作后,切换到我希望合并的分支并再次执行相同的任务,这也将更新版本移至.prefabs
由 UnityYAMLMerge 处理。
最后,回到 master,我尝试合并更新的分支,所有分支都.prefabs
愉快地合并了(感谢 Atom 中的一些评论,我强烈推荐外部工具)并且没有出现任何错误。
编辑:将此设置添加到 .gitattributes 并不能保证 .prefab 会移出 LFS\xe2\x80\x94,只有在编辑 .prefab 后才会发生。当您尝试合并仍然指向 LFS 中的 .prefab 的分支(这会破坏 Unity 中的引用)时,这可能会很痛苦。为此,我使用 LFS 参考将资源文本复制到原始资源上,并在 Unity 中重新链接。
\n\n 归档时间: |
|
查看次数: |
817 次 |
最近记录: |