我对git子模块非常困惑。
我的问题基本上是我无法让git理解~/main-project/submodule
是一个子模块。
我对git子模块有很好的经验:
在我的dotfiles repository中,我在~/dotfiles-repo
中创建了.gitmodules
文件,并添加了路径和URL。从那时起,如果我更改了子模块中的文件并运行git status
,我会得到类似以下内容的反馈:.vim/bundle/auto-complete (new commits) # 红色字体
我在~/main-project
中创建了.gitmodules
文件,但是:
- 即使我更改了
~/main-project/submodule
中的内容并将更改推送,当在~/main-project
中运行git status
时,我也没有像<submodule> (new commits) # 红色字体
这样的反馈。我只看到在这些目录中所做的更改 当我在
github
上单击这些目录的链接时,它没有将我引导到这些目录本身的存储库,而是让我留在同一存储库中。- 也许我完全不明白。子模块的主要特点是什么?
- 为什么git可以理解dotfiles repo中的子模块,但不能理解我的其他repo中的子模块?
- 是因为我已经告诉git将
~/main-project/submodule
中的文件添加到索引中了吗?
我看过这个问题,得到了这个回答,但我不确定是否需要使用git-subtree
。我不想做可能难以恢复更改的事情。
编辑: 这个建议的重复解决方案也不起作用,我收到一个错误消息:
Updates were rejected because the remote contains work that you do not have locally
。看起来@GabLeRoux实际上告诉我将<repo-A>
推送到<repo-B>
的URL。
git status
中不会看到子模块内部的更改。 - Tim Biegeleisen