当我打电话时
git submodule update --init --recursive --depth 50 --remote --jobs 1
对于具有名为
main
的分支的子模块,当我从本地 git bash 调用它时,效果很好,而当从 GitHub CI/CD 管道调用时,它会失败:
13:27:13.378819 git.c:455 trace: built-in: git rev-parse --verify origin/main
fatal: Needed a single revision
13:27:13.381233 git.c:742 trace: exec: git-sh-i18n--envsubst --variables 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.381277 run-command.c:668 trace: run_command: git-sh-i18n--envsubst --variables 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.384468 git.c:742 trace: exec: git-sh-i18n--envsubst 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.384504 run-command.c:668 trace: run_command: git-sh-i18n--envsubst 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
fatal: Unable to find current origin/main revision in submodule path 'roles/trendmicro-ds-agent-branch'
这是我的 .gitmodules 文件:
[submodule "roles/trendmicro-ds-agent-branch"]
path = roles/trendmicro-ds-agent-branch
url = ../../modules/ansible/trendmicro-ds-agent
branch = main
当我将 .gitmdoules 中的
branch = main
替换为 branch = master
(其中 master 是子模块项目中的主分支)时,它在管道中也能正常工作。
知道这里出了什么问题吗?
--single-branch
选项未设置。
Git 还会将此设置应用于您的子模块。它只会检查默认分支(在您的情况下是
master
)。稍后,当您运行 git submodule update
切换到配置的 branch = main
时,它无法在本地找到它并失败。
GitHub 操作操作,则只需使用
fetch-depth: 0
运行即可确保它获取所有分支:
- uses: actions/checkout@v4
with:
fetch-depth: 0