Unity在Asset文件夹中创建和删除文件夹的元文件。
使用版本控制时可能会产生烦人的情况(您可以跳过并转到问题):有人会创建一个文件夹,但会忽略该文件夹的元文件。 Unity创建元文件,此人将元添加到版本控制。另一个人获得变更集,由于他没有该文件夹,他的Unity删除了元文件,他从版本控制中删除了元文件。并非团队中的每个人都明白这一点,因此这个过程会在地狱中延续下去。
令人惊讶的是,这种情况一直都在发生。所以,有两个问题:
答案 0 :(得分:54)
创建新资产时,请确保资产本身和关联的.meta文件都已添加到版本控制中。
对我而言,这足以让他们置于版本控制之下。我看到两种解决问题的方法:
我刚刚玩了不同的git命令,以下内容可能很有用: git hook脚本首先检查.gitignore是否已更改:
git diff-index --cached --name-only HEAD | grep ".gitignore"
如果它们位于Assets文件夹下,则打印.gitignore中所有新添加的行的目录名称:
git diff --cached --word-diff=plain .gitignore | grep -o -e "{+\/.*\/Assets\/.*+}" | cut -d + -f 2
<强>更新强>
我刚刚编写了这样一个预提交钩子:-)有关代码,请参阅GitHub存储库git-pre-commit-hook-unity-assets,有关详细信息,请参阅我的blog posting。
答案 1 :(得分:3)
将此添加到.gitignore
#Ignore all .meta file
*.meta
#But not source file with postfix. which is everything but a folder
!*.*.meta
这将忽略不带后缀的文件。但这不应该受伤。
答案 2 :(得分:-6)
要包含元文件和资源,只需在排除后添加以下内容:
!*.*.meta
以下是我的.gitignore示例:
# Ignore the following files
# --------------------------
# Unity3D specific
#
**/Library/*
**/Temp/*
**/*.csproj
**/*.unityproj
**/*.sln
**/*.userprefs
**/*.pidb
# include meta files
!*.*.meta
我把它放在带有git存储库结构的文件夹中,所以我的项目结构看起来类似于:
root folder /
- Unity Project/
- .gitignore
- .git/
- ProjectFolder/
- {all project related data}
希望有所帮助。