我开始在Github上创建一个repo(https://github.com/BenEngbers/BasexCpp)
然后我创建了一个本地Git仓库并添加了2个子模块。这是我的master的.git/config:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.com:BenEngbers/BasexCpp.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
[branch "master"]
remote = origin
merge = refs/heads/master
这是.gitmodules:
[submodule "libBasexTest"]
path = libBasexTest
url = git@github.com:BenEngbers/BasexCpp.git
[submodule "libBasexCpp"]
path = libBasexCpp
url = git@github.com:BenEngbers/BasexCpp.git
编辑
我将.gitmodules改为:
[submodule "libBasexTest"]
path = libBasexTest
url = ../libBasexTest
[submodule "libBasexCpp"]
path = libBasexCpp
url = ../libBasexCpp
现在我看到libBasexCpp@ef9a760指向https://github.com/BenEngbers/libBasexCpp/tree/ef9a7608c089e76415a58537540c31ec1661cf0e
url的正确值应该是什么?
结束编辑
我第一次使用
git submodule add git@github.com:BenEngbers/BasexCpp.git libBasexTest
git submodule add git@github.com:BenEngbers/BasexCpp.git libBasexCpp
将模块添加到远程存储库。在向两个子模块添加内容之后,我使用
git push --recurse-submodules=on-demand
推到遥控器上。
在推送Git报告说一切都是最新的,但当我试图打开远程子模块时,我收到了一个错误通知(“看起来有些问题”)。
我在Google上找到的所有信息都告诉我如何将远程子模块导入到本地存储库中,但我没有找到任何关于如何首先创建远程子模块,然后推送到新模块的说明。
任何帮助都很感激
1条答案
按热度按时间g52tjvyc1#
子模块是独立的存储库。它们需要指向单独的远程存储库。
这是:
是错误的,因为您的两个本地子模块都指向同一个远程存储库
git@github.com:BenEngbers/BasexCpp.git
。将子模块视为不同的独立项目,您需要将一个项目作为另一个项目的一部分。此子模块可以是多个父项目的一部分。我想你可能已经在正确的轨道上与你的编辑,但你改变的网址似乎不仓库:github上的仓库通常以. git结尾。
你怎么解决这个问题?你需要在github上为每个子模块创建一个仓库。完成后,您可以使用以下命令将子模块添加到父存储库中:
请注意,每个目录/子模块都有自己的远程存储库URL。
当你在目录
libBasexTest
或libBasexCpp
中进行更改时,你在子模块中工作,你提交并推送到这些远程。与父存储库BasexCpp
无关,工作是独立的。在你在父仓库中提交的时候,你 * 指出子模块中的哪个提交必须被使用 *。父存储库不知道子模块的内容:它唯一知道的是“在那个目录中,我必须从URL www.example.com checkout 提交[SHA-1]git@github.com/asdfasdfasdf”。