【问题标题】:Unity to Git: Multiple ProblemsUnity 到 Git:多个问题
【发布时间】:2021-08-23 16:17:54
【问题描述】:

因为太多问题,我已经面对屏幕超过 12 个小时,我有一个包含大量文件的 Unity 项目(主要是因为有超过 3000 个图块)并将其带到 Git 是一个巨大的问题。我承认我只有 13 岁。老了,我还是开始了解 Git

首先: 当我使用相同的过程将我的 Huge 归档项目完全转移到一个 repo 时,不得不等待大量的时间,项目内的文件夹(例如:资产、库等)不会出现,只有这些文件夹之外的文件,例如 csproj。文件。

第二: 我不得不决定只传输 Assets 文件夹。有两种选择,第一种是在项目中使用 git 并在 Assets 文件夹中“git add”,缺点是有时会花费大量时间来加载文件。第二个是在 Assets 文件夹中使用 git 来“git add --all”,缺点是它不会被我安装的名为 Github for Unity https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 的新软件包检测到,也不会被我的 IDE Jetbrains 检测到骑士。

拜托,我已经哭了半个小时,想放弃我的整个编程生涯,所以如果有人能回答,那将非常感谢你的帮助。 谢谢。

【问题讨论】:

  • 我猜,既然你提到了永远不应该提交给源代码管理的库文件夹,那么你没有.gitignore 文件。这个应该有很大帮助。 github.com/github/gitignore/blob/master/Unity.gitignore 如果您有一个大型项目,第一次提交将需要一些时间。您需要耐心等待。
  • 除了.gitignore,您肯定还希望将Git LFS 用于较大的资产文件。我建议您也阅读here,我在其中详细解释了您想要保留的内容以及您绝对不想保留在版本控制中的内容
  • 某些文件夹,例如“Library”和“temp”,您无需担心复制,因为当您再次打开项目时,Unity 会重新创建这些文件。 Git 可能是一个真正的痛苦,不要放弃!在你的项目位置初始化一个新的 repo 可能是值得的,像 github desktop 这样的 git 客户端可以在这方面提供大量帮助
  • 好的,我会尝试使用此信息,谢谢。

标签: git unity3d


【解决方案1】:

虽然我在将项目转移到 git 方面的经历非常糟糕,而且我也做了一些研究,但以下是我的解决方案:

  1. 如果你想使用普通的 git,比如使用 GitHub 来存储你的项目,你应该小心。第一件事是你应该使用.gitignore来选择忽略哪个和提交哪个,这非常重要。
    但是,你会遇到另一个致命的问题,当你的项目越来越拥抱,我的意思是你的场景中有这么多的游戏对象,如果你有大量的 3D 模型,这种情况会更严重,你会发现场景文件非常大,我的将近8Gb。然后你发现你应该需要解决Git中大文件的可怕兼容性,using Git LFS to solve this, and you also need to expect that your supplier do not set a threshold in file size when transferring one single file to git server. 其次,由于你使用的是普通的git,而这么多文件是由Unity自己处理和格式化的,git不能轻易解析文件内容正确,这将导致场景中的每个简单修改都会使 git 认为这是一个新文件,尽管您可能只更改游戏对象的名称。此操作的可怕后果是您的 git repo 将消耗大量文件存储空间(您会注意到 .git 文件夹将消耗大量存储空间)。当你想和你的朋友分享这个 repo 时,它会变成一场灾难。

所以这里是我个人推荐的第二种解决方案。

  1. 你可以使用官方版的git解决你的问题:Plastic SCM。 Unity 官方使用这个 git 供应商来控制版本。 你仍然可以使用Plastic SCM 作为替代版本控制工具,(就像它在 cmets 中提到的,PlasticSCM 不是基于 Git,抱歉。)它有默认的.gitignore(在这种情况下,我们使用ignore.conf 来控制忽略),这样您就不必担心我应该上传哪个,哪个不应该。同时,它可以正确分析每个 Unity 生成的文件的正确文件类型。因此,当您更改场景中游戏对象的名称并保存时,整个场景文件将不再被视为新文件,git 只会更新此文件中的一行。

但要提一下,我推荐Plastic SCM作为版本控制的方式只是因为它可以正确分析Unity生成的文件类型,并不意味着它是完美的。我在使用时遇到了一些奇怪的错误,因为它只是在 beta 测试期间,但这只是另一个故事。

【讨论】:

  • wiki 谈到 Plastic SCM:“它是一个完整的版本控制堆栈不是基于 Git”
  • @bolov 哇,谢谢你的信息,我被它的功能迷惑了。
猜你喜欢
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多