Git子树特定忽略

时间:2016-08-12 17:30:11

标签: git unity3d git-subtree

我正在使用Git作为我自己的的Unity项目(我是唯一的开发人员,因此我可以使用破坏性命令)

Unity开发人员可能知道,Unity为“Assets”文件夹下的所有内容创建“.meta”文件,该文件夹是项目的主文件夹。这些文件“必须”也与原始文件一起被跟踪,以保持项目的完整性。

以下是项目存储库的.gitignore文件:

# Unity Project Folder
/ExampleProjectName/[Ll]ibrary/
/ExampleProjectName/[Tt]emp/
/ExampleProjectName/[Oo]bj/

# Autogenerated VS/MD solution and project files
ExportedObj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# Unity3D Generated File On Crash Reports
sysinfo.txt

# OS Related Stuff
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

我还有一个框架和公共代码库。我忽略此框架存储库中的.meta文件,因为在将框架导入项目时,应按每个项目生成这些脚本的.meta个文件。 (在框架仓库中到处查看.meta个文件很烦人。)

这是框架存储库的.gitignore文件:

# Exclude ".meta" files created by Unity
*.meta

# Autogenerated VS/MD solution and project files
### The rest is identical to the project .gitignore file. ###

正如您可能想象的那样,我尝试将框架作为子树添加到项目存储库中。它确实有效,但是存在一个问题:框架存储库的.gitignore文件忽略.meta个文件,也适用于项目存储库并导致它忽略子树目录下的.meta个文件

总结一下:我希望在项目存储库中跟踪子树目录(递归)中的.meta个文件,但是要在框架存储库中被忽略。

(对于那些想知道为什么必须跟踪.meta个文件的人,最重要的原因是.meta个文件包含相应资产的ID,而Unity使用这些ID来重新评估这些资产在项目中。)

1 个答案:

答案 0 :(得分:2)

您可以在资源目录中添加!文件,该文件使用. ├── .gitignore ├── main.meta └── unity ├── .gitignore └── sub.meta

覆盖并否定继承的无知

我对你的文件结构层次结构感到有些困惑,所以这是一个展示的例子。

.gitignore

根目录*.meta

unity/.gitignore

!*.meta

的内容
git add . && git status --ignored

现在让我们看看git想要跟踪的内容:

On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

  new file:   .gitignore
  new file:   unity/.gitignore
  new file:   unity/sub.meta

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

  main.meta
\\server\assemblies

您可以看到它正在跟踪Unity元文件,但在其他地方忽略它们。