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

arl*_*ogb 13 git git-submodules

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

在远程端:我将repo检查到git checkout -f具有set GIT-DIRGIT-WORK-TREEenv vars 的工作树.

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

然后我做:

git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)

这个错误的消息如下:

working tree '../../workTree/' already exists
Clone of 'git@github.com:user/MySubmodule.git' into submodule path 'MySubmodule' failed
Run Code Online (Sandbox Code Playgroud)

空的子模块目录现在也从工作树中"消失"了......

我不知道我在哪里出错了,基本上我只想查看子模块文件,就像我使用'git submodule update'一样.

小智 0

首先,为什么需要签出裸仓库?只需将其克隆到其他地方并使用普通的非裸存储库即可。

但如果你确实需要这样做,你可以将文件夹重命名为.git,更改bare = truebare = falsein.git/config然后执行git checkout

  • 我使用裸存储库的原因如下:http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html 除了签出之外,所有裸存储库功能都可以正常工作子模块到分离的工作树。 (3认同)