我有一个项目,用于在路径中包含子模块mysubmodule.我从源代码(1.8.3-rc2)安装了最新的Git并运行git submodule deinit mysubmodule.然后我删除了.gitmodules文件并提交了更改.我还.git从mysubmodule文件夹中删除了该目录.
我现在想mysubmodule直接将文件提交到我的仓库,但是git说没有变化.如果我输入git add mysubmodule它什么都不做.如果我输入git add mysubmodule/file.txt它说fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'
我还发现,如果您查看一个新版本的repo,它会创建一个mysubmodule目录,尽管没有.gitmodules文件.跑步git submodule init会给你一个No submodule mapping found in .gitmodules for path 'mysubmodule'错误.
我该如何解决?
我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?
目前,我有一个post-receive钩子,其中包含:
git --work-tree=/served/data/location --git-dir=/this/bare/git/repo checkout -f
Run Code Online (Sandbox Code Playgroud)
这非常有效,直到我想包含一个子模块,它只是忽略了它。
经过一番阅读后,我想我可以简单地添加:
git --work-tree=/served/data/location --git-dir=/this/bare/git/repo submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
唉:
没有工作树就无法使用 git-submodule
奇怪的是,因为我明确提供了--work-tree与之前结账相同的信息,效果很好。
我git version 2.7.4在服务器上使用,并使用git version 2.11.0.
据我所知,这与此处的问题相同,只是谈论了我从未听说过且没有使用的名为“OpenShift”的东西,因此答案并没有真正的帮助。