【问题标题】:How do I stop ignoring a file pattern in a subtree subdirectory?如何停止忽略子树子目录中的文件模式?
【发布时间】:2016-08-12 17:30:11
【问题描述】:

我正在将 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 文件应该由每个项目生成。 (在框架 repo 中随处可见 .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 以便在项目中引用这些资产。)

【问题讨论】:

    标签: git unity3d git-subtree


    【解决方案1】:

    您可以在资产目录中添加一个.gitignore 文件,该文件使用! 覆盖和否定继承的无知

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

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

    root.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 元文件,但在其他任何地方都忽略了它们。

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2020-03-22
      • 2017-06-29
      • 2022-10-03
      • 1970-01-01
      相关资源
      最近更新 更多