我有一个带有附加工作树的git存储库,我正在推送到远程的裸仓库。 存储库包含一个子模块。
在远程端:我会将回购邮件签出到已设置git checkout -f
和GIT-DIR
env vars的工作树GIT-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'一样。
答案 0 :(得分:1)
看起来当您运行“git submodule update”时无法设置GIT_WORK_TREE ...它会尝试将其用作子模块的工作树,而不是超级项目。
我必须在更新后的脚本更新服务器...
/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变量,并且submodule命令没有设置“--work-tree”......似乎它需要在cwd中工作。
答案 1 :(得分:0)
首先,你为什么需要结账?只需在其他地方克隆它,并使用普通的非裸仓库。
但如果你真的需要这样做,你可以将文件夹重命名为.git
,将bare = true
更改为bare = false
中的.git/config
,然后执行git checkout