以前可能会问这个问题,但很难说,因为子模块似乎会导致很多问题。这就是我正在做的事情。
# cd to parent repo
git submodule add git://example.com/myrepo
cd myrepo
# make some changes
git commit -am "made changes"
cd ..
git commit -am "modified submodule"
git clone --recursive . <path to cloned repo>
当我这样做时,我会收到错误
致命:引用不是树:96fa64c0dd64684f86d17841f7c515446885eb33
接着是
无法在子模块路径'myrepo'中签出'96fa64c0dd64684f86d17841f7c515446885eb33'
我在这里做错了什么?我只想添加一个子模块,然后对其进行一些更改,然后将整个父源树(包括子模块)克隆到一个新的存储库。
答案 0 :(得分:0)
你应该致电
git submodule init
添加子模块后。 git submodule add
克隆存储库并向.gitmodules添加条目。 git submodule init
初始化子模块并将.gitmodules中的条目复制到.git / config
首先克隆父回购(如果适用)
git clone git@github.com:test/test.git
更改为克隆目录并添加子模块
#change to the parent repo directory
cd test
#add the submodule to test/submodules/mysubmodule
git add submodule git@github.com/test/mysubmodule.git submodules/mysubmodule
初始化所有子模块并更新所有子模块,包括嵌套的子模块
git submodule update --init --recursive
添加所有更改并提交并推送到遥控器(如果适用)
git add .
git commit
最后一部分非常重要,因为在您提交更改之前,repo并不真正了解您的子模块。