Unity元文件与git分支

9
我们目前使用“Visible Meta Files”作为内部版本控制(如果它不是正确的方法,我们将没有问题更改它),但目前在处理分支时仍感到困惑。
例如,我最近完成了一个IAP插件,其中创建了许多文件夹和文件,并且与其相关的meta文件都有所变化。
在我的正常 git 工作方式下,我会在分支中完成工作,然后在准备好之后将其合并到主分支。但不幸的是,如果这样做,在切换到其他分支时,Unity 会从创建在另一个分支上的文件夹中重新生成所有这些 meta 文件,这会破坏任何清洁合并或类似的操作。
因此,到目前为止,我选择的方法是,在合并时关闭 Unity,删除所有这些剩余的 meta 文件/允许合并覆盖本地文件,但我认为肯定有更好的方法,对吗?
2个回答

2

这是Unity的一个令人烦恼的行为。确保正确提交/推送元数据文件。我建议在您工作的分支上拥有多个“本地副本”,并且只处理元数据文件一次,即在合并/重新集成新功能后。这样,您将把它们视为Unity中的单独项目。


1
适当处理git和unity的方法是拥有一个适当的gitignore。这将使git忽略任何具有特定扩展名的文件被提交,但允许它们存在于工作目录中(对于元数据或解决方案文件非常有用)。Unity手册建议将元数据文件提交到存储库。我通常使用GitHub的Unity Gitignore
我在每个项目上都会执行以下操作:
  1. 设置unity
    • 编辑>项目设置>编辑器
    • 将版本控制模式设置为“可见元文件”
    • 将资源序列化模式设置为“强制文本”
  2. GitHub的Unity Gitignore提交到项目中
这应该会让git合并变得容易,因为你使用的是文本文件而不是某些二进制一些文本(或全部二进制)。这种工作流程在黑客马拉松比赛中为我和我的朋友们省去了无数的头痛。只要记住一次只有一个人工作/提交场景!

所有这些设置都是我们的设置,我们使用了我们的gitignore作为项目设置的基础。所以,这些都不会对我现在的情况有所帮助。此外,场景与我所讨论的内容无关。想象一下,你在一个分支上创建了文件夹Editor/Internal,并在那里工作,但同时,巧合的是,其他人在主分支上创建了Editor/Internal,将会创建两个不同的Internal.meta文件,据我所知,我无法确定选择哪一个好,或者如何正确地合并它们。 - seaders
我现在明白了,我认为原始文章中没有确切地说明这一点。我提到场景的事情是因为那是人们经常忘记的事情。根据你所描述的,我能想到的唯一方法就是像你说的那样删除元数据,手动处理合并冲突(元文件基于YAML),或确保没有人在不同的分支上创建相同的文件夹。 - Frozenfire
你也可以将.meta文件添加到你的gitignore中。如果你的项目很大,这并不理想,因为每当你切换分支时Unity都必须重新制作它们,但如果这是你的团队经常遇到的问题,那么等待重新制作它可能是值得的时间。 - Frozenfire
1
大量删除元文件也不是一个好的选择,因为它可能会导致已经设置好的链接出现问题。例如,在该“内部”文件夹中有一个预制件,其中包含一个已连接的按钮,从其中删除元信息可能会(有时)导致其断开连接。老实说,自从我发了这篇帖子以来,我们对Unity的使用更加熟练,我并不认为在源代码控制方面有一个完美的解决方案。只要小心谨慎,知道自己在做什么,并且不要进行大规模合并/长时间留在主分支而没有同步就好了。 - seaders
@seaders 我认为这应该是一个答案而不是评论。感谢您的意见。 - Guney Ozsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接