git - 推送到裸工作目录后,如何在工作树中初始化/更新 git 子模块?

标签 git git-submodules

我有一个带有附加工作树的 git 存储库,我正在将其推送到远程的裸存储库。 存储库包含一个子模块。

在远程端:我将 repo 检查到工作树 git checkout -f 并设置了 GIT-DIRGIT-WORK-TREE 环境变量。

在工作树中,我现在看到所有预期的文件和子模块的空目录('MySubmodule')。

然后我做:

git submodule init
git submodule update

此错误消息如下:

working tree '../../workTree/' already exists
Clone of 'git@github.com:user/MySubmodule.git' into submodule path 'MySubmodule' failed

空的子模块目录现在也从工作树中“消失”了……

我不确定我哪里出了问题,基本上我只是想像使用“git submodule update”一样检查子模块文件。

最佳答案

看起来当您运行“git submodule update”时您无法设置 GIT_WORK_TREE...它会尝试将其用作子模块的工作树,而不是 super 项目。

我不得不更新我的服务器更新后脚本...

/usr/local/bin/git --git-dir="$PROJECT_DIR" --work-tree="$PROJECT_DEMO" checkout -f;

cd "$PROJECT_DEMO";
/usr/local/bin/git --git-dir="$PROJECT_DIR" submodule update --init --recursive;

注意我没有设置 env 变量,而且子模块命令没有设置“--work-tree”……看来它需要从 cwd 开始工作。

关于git - 推送到裸工作目录后,如何在工作树中初始化/更新 git 子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446681/

相关文章:

gitlab - 如何传递凭据以在 Gitlab CI 脚本中拉取子模块?

修改第三方代码时的 Git 子模块工作流程

git - 为什么 git submodule update 失败并显示 "fatal: remote error: upload-pack: not our ref"?

git - 清理 git 存储库 BFG Repo-Cleaner --- 我推送后 repo 大小仍然很大

Git 与 Remote Master merge

git - 使用 Julia 安装模块

git - SVN 提交与 Git 提交

git - 对 git 子模块进行更改,然后将它们添加到我的主项目中

git - 将 Git 子模块转换为子树

github 操作 : how to check if current push has new tag (is new release)?