如何在GitHub Action中拉取子模块内的LFS文件?
解决子模块中LFS文件拉取失败的问题
你的问题核心在于actions/checkout@v2的lfs: true仅会拉取主仓库的LFS文件,不会自动处理子模块内的LFS内容——之前能正常工作可能是偶然的兼容场景,现在需要针对性调整配置。
以下是两种可行的解决办法:
方案1:升级到最新版checkout Action
v2版本较老旧,新版对LFS和子模块的支持更完善,直接替换为v4即可:
jobs: steps: ... - uses: actions/checkout@v4 with: lfs: true token: ${{ secrets.ACCESS_TOKEN }} submodules: recursive fetch-depth: 0
v4会自动递归处理所有子模块的LFS文件,无需额外步骤。
方案2:保留v2,添加手动拉取子模块LFS的步骤
如果不想升级Action版本,可在checkout步骤后添加单独命令,手动拉取子模块的LFS内容:
jobs: steps: ... - uses: actions/checkout@v2 with: lfs: true token: ${{ secrets.ACCESS_TOKEN }} submodules: recursive fetch-depth: 0 # 手动拉取子模块的LFS文件 - name: Pull submodule LFS files run: git submodule foreach --recursive git lfs pull
这条命令会遍历所有嵌套的子模块,逐一拉取它们的LFS文件。
额外注意事项
- 确保你的
ACCESS_TOKEN同时拥有主仓库和子模块仓库的读取权限,包括LFS对象的访问权限 - 如果子模块是私有仓库,token需要具备对应仓库的访问权限
内容的提问来源于stack exchange,提问作者Shahar
相关产品推荐
相关产品推荐

