始终解决与我们或他们之间的Git冲突

时间:2020-04-25 08:53:49

标签: git unity3d github-desktop

我正在尝试以一种“艺术家友好”的方式为Unity设置Git和GitHub桌面。

我看到了不同的建议和各种.gitattributes文件,但没有一个令人满意。原因之一是大多数要求设置自定义合并驱动程序并使用Unity的YAML合并工具。但是,这在我们的环境中都不是很理想,而且我也不总是对从Unity的合并工具获得的结果感到满意。

Unity的资产序列化设置为强制文本,并且我们有可见的元文件

理想情况下,我希望通过选择我们的他们的解决所有合并冲突。可能是源代码周围的例外,在该源代码中合并有意义且易于阅读。

第一次尝试

我的尝试之一包括设置.gitattributes来处理Unity场景文件,如下所示:

*.unity merge=binary -diff -text

这在GitHub Desktop中提供了所需的行为,但不幸的是,由于所有更改都被视为二进制,因此Git历史也迅速增长。

GitHub Desktop resolve

第二次尝试

另一种尝试是:

*.unity merge=binary diff -text

这使得增量更改可以很好地工作,并防止Git历史记录迅速增长,但是现在每个合并冲突都可以通过用户进行合并的更改自动解决。也不理想。

GitHub Desktop resolve

Git LFS

我们还将Git LFS用于其他二进制文件,因此解决方案也可以是将所有Unity资产文件也存储在LFS中。但这也会带来冲突问题。

在我的.gitattributes中,

*.png filter=lfs diff=lfs merge=lfs -text

发生冲突时,GitHub Desktop尝试合并二进制文件,导致文件损坏(这种行为超出了我的范围)。这里的分辨率是多少?

注释1

我仍在学习有关Git的更多信息,并且仍然感到陌生,但是Web上大量的“好的建议”确实使事情变得更加混乱。我当然也在Git文档中寻找答案,但是找不到这个特定问题的答案。我真的只是想了解.gitattributes的工作原理以及使用它的可能性。

也欢迎其他客户提出建议,但是对艺术家友好是关键。

注释2

我知道我可以使用git checkout --theirs -- path/to/file,但这并不是我所说的 artist friendly

注释3

也许这更多是对GitHub Desktop的反馈请求,但我认为也许会有一种方法可以配置Git以使用所需的行为。最好仅使用.gitattributes

编辑

经调查,Git LFS合并似乎只是用指针替换了image.png的内容。是吗?

version https://git-lfs.github.com/spec/v1
<<<<<<< HEAD
oid sha256:eebb5d4ccca98dec56306a22cfd518de0d066674f5c4a4859daef7fe0dc54d4d
size 12748
=======
oid sha256:13c917ff0743750c72d0229f6311db52b2663790a2ef3774d1b661e516bf6852
size 15275
>>>>>>> 669836a1b32690baf4ef84dac711c44d274966c4

该问题似乎与GitHub桌面有关:https://github.com/desktop/desktop/issues/7166

建议的解决方案是像这样添加binary

*.png filter=lfs diff=lfs merge=lfs -text binary

0 个答案:

没有答案