You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨多Unity项目使用git子模块复用核心代码时如何单独跟踪各项目.meta文件

可行实现方案

首先明确核心原理:git子模块是独立的git仓库,父项目默认仅跟踪子模块的commit指针,不处理子模块内部的文件版本,且子模块内的.gitignore规则仅作用于子模块自身的版本管理,不影响父项目规则。
下面给出两种可落地的方案:

方案1:改用git subtree管理核心库(推荐,操作最顺畅)

git subtree会将核心库的代码直接作为父项目的普通目录纳入版本管理,完美适配你的需求:

  • 核心库自身的远程仓库依然保留**/*.meta的忽略规则,不会提交通用.meta文件
  • 各个游戏项目可以正常跟踪Assets/Scripts/Core/目录下所有生成的.meta文件,和项目其他普通资源的跟踪逻辑完全一致
  • 依然可以正常向核心库远程仓库提交/拉取通用代码更新,不会把各项目的.meta文件提交到核心库
    操作步骤:
  1. 移除现有git submodule配置:
    git submodule deinit -f Assets/Scripts/Core
    rm -rf .git/modules/Assets/Scripts/Core
    git rm -f Assets/Scripts/Core
    
  2. 用subtree添加核心库:
    git subtree add --prefix=Assets/Scripts/Core [核心库远程地址] [分支名] --squash
    
  3. 后续拉取核心库更新命令:
    git subtree pull --prefix=Assets/Scripts/Core [核心库远程地址] [分支名] --squash
    
  4. 向核心库提交通用代码更新命令:
    git subtree push --prefix=Assets/Scripts/Core [核心库远程地址] [分支名]
    

方案2:保留git submodule,用脚本同步.meta文件

如果不想改动现有submodule架构,可以用本地脚本+git钩子实现.meta的单独跟踪:

  1. 在各个游戏项目的Assets目录下新建CoreMeta专属目录,用于存储当前项目核心库的.meta文件,这个目录会被父项目正常跟踪
  2. 编写两个简单脚本:
    • 备份脚本:遍历Assets/Scripts/Core/下所有.meta文件,保持目录结构同步复制到CoreMeta目录
    • 还原脚本:遍历CoreMeta目录下所有.meta文件,同步复制回Assets/Scripts/Core/对应位置
  3. 给项目配置git钩子:
    • 在post-checkout、post-merge、submodule update的钩子中触发还原脚本,每次切换分支、更新子模块后自动还原对应.meta文件
    • 可以配置pre-commit钩子自动触发备份脚本,提交前自动更新备份的.meta文件
      这种方案完全不改动现有核心库和submodule配置,缺点是需要额外维护脚本和钩子配置。

内容的提问来源于stack exchange,提问作者Spencer Pollock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:18:02