git - 如何停止忽略子树子目录中的文件模式?

标签 git unity3d git-subtree

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

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

我还有一个框架和公共(public)代码库。我忽略这个框架存储库中的.meta文件,因为这些脚本的.meta文件应该由每个项目生成当框架导入到项目中时。 (在框架 repo 协议(protocol)中随处可见 .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 文件包含相应 Assets 的 ID,Unity 使用这些 ID 以便在项目中引用这些 Assets 。)

最佳答案

您可以在 Asset 目录中添加一个 .gitignore 文件,用 ! 覆盖并否定继承的无知

我对你的文件结构层次结构有点困惑,所以这里有一个例子来演示。

.
├── .gitignore
├── main.meta
└── unity
    ├── .gitignore
    └── sub.meta

.gitignore 的内容

*.meta

unity/.gitignore 的内容

!*.meta

现在让我们看看 git 要跟踪什么:

git add . && git status --ignored
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

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

关于git - 如何停止忽略子树子目录中的文件模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923530/

相关文章:

git - 在 git 中,我会失去 promise 的工作吗?

git-svn - 带有嵌套 svn :externals 的 svn 到 git 迁移

git - 是否可以在维护父仓库结构的同时创建 git 子树的分支?

c# - unity 序列化字典 `Index Out Of Range` 后12项

python - 如何在没有符号链接(symbolic link)的情况下使用 git 和 buidout 构建具有共享子应用程序的 python 项目

git - 最终会使用哪个版本的 git 文件 : LOCAL, BASE 或 REMOTE?

来自不同用户的 Git pull 命令

Git 基础 - merge 回 master

c# - 序列化 ScriptableObject 引用 (InstanceID)

c# - 使用反射的对象与单元中的目标类型不匹配