我正在Unity17.2.1中的Unity3D
项目上工作
我在Windows 10上将git与Git-LFS
和SourceTree
结合使用
我的问题是:
在我的本地克隆上,一切正常。
但是如果我将项目克隆到新文件夹中(用于测试),则会出现很多错误。它可以通过LFS
下载最多的文件tracket,但是我得到了其中的一些文件:
Error downloading object: Assets/VRITM/_Prefabs/SceneGraph/NetworkManager/DebugHUD/ConfigurationPanel/InputField.prefab (3a0c39040b397ab7120d427e019ad767b2bd6b91386856f9730507be1b59ad3c)
我可以以某种方式在本地恢复“复制的”(新克隆的)项目,因为我已经将整个Assets-Folder从我的工作本地克隆导出为unitypackage。
但是这样做之后,git仍然声称它是“最新的”,因此我无法再次提交/推送。
如何修复远程存储库(github)上那些LFS跟踪的文件?
由于我在本地克隆上都能正常工作,所以我想必须有某种方式来“强制”
git-lfs
来上载所有文件。第二个问题(现在已解决。请参阅评论。)
另外,我有两个在 merge 前已重命名的脚本:
在主人那里
DebugHUDManager.cs
ConfigurationHUDManager.cs
但是我将类和文件重命名为DebugHudManager.cs
ConfigurationHudManager.cs
因此,在我的本地(工作)克隆中,当我新克隆时,我会在以后得到以前的文件(..HUD ..),因此GameObject仅附有缺少的脚本。我可以通过仅重命名文件来解决此问题。但这不是gitt中跟踪的也是。它一直说“最新”。这是我的 .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
进一步说明
UnityYamlMerge.exe
的Unity智能 merge 。 (我现在添加了这个。).prefab
和.unity
。所有这些似乎都是我 merge 之前最新提交的一部分。但是其他.prefab
文件也可以很好地下载。.prefab
文件的文件大小例如为10Kb。 1,9Mb。.prefab
文件进行了另一个测试提交。那很好。唯一不起作用的是那些由 merge 添加/更改的特定.prefab
文件。如何拯救这个项目? o.O
更新:
同时,我创建了一个新的存储库,并从工作的本地克隆中复制了文件(当然不包括.git文件夹)。但是,新存储库中的历史当然已经消失了。但是至少我们可以继续合作。
最佳答案
我知道您已经解决了 merge 问题,但是我想针对同一问题记录我的修复程序。就是说,我尝试将LFS跟踪的.prefabs
merge 到master中,并且文件损坏或链接错误,并且 merge 后不会在Unity项目中加载任何一种方法。
看到上面的.gitattributes
文件后,我意识到问题是SmartMerge(UnityYAMLMerge)无法处理 merge ,因此当然文件也不会 merge 。这是我所做的:
首先,我重置了master,然后确认一切仍在Unity中正常工作
git reset --hard origin/master
其次,我更新了.gitattributes
文件using settings similar to yours,有效地将所有.prefabs
从LFS中移出,以便它们可以由UnityYAMLMerge处理。第三,我将更改提交给了master。
完成此操作后,切换到我希望 merge 的分支并再次执行相同的任务,这也将
.prefabs
的更新版本移至UnityYAMLMerge处理。最后,回到主服务器,我尝试 merge 更新的分支,所有
.prefabs
都愉快地 merge 了(由于我强烈建议外部工具对Atom进行一些评论),并且没有出现任何错误。编辑:将此设置添加到.gitattributes并不能保证.prefab将移出LFS,只有在编辑.prefab后才会发生。当您尝试 merge 仍指向LFS中的.prefab的分支(这会破坏Unity中的引用)时,这可能会很痛苦。为此,我使用LFS引用将 Assets 文本复制到原始 Assets 上,并在Unity中重新链接。
关于git - merge 后如何在git-lfs中修复Unity .prefab文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48109609/