4

这个问题是基于这个线程

我的 .gitmodules 在我家

[submodule "bin"]
           path = bin
           url = git://github.com/masi/bin.git

我家的文件夹结构:

~
|-- [drwxr-xr-x] bin          // this is the folder which I make a submodule
                              // it is also a folder where I have a Git to push my submodule's files
    | -- fileA
    ` -- folderA
    ...

我跑

git submodule init    # I get no output from these commands
git submodule update          

我跑

git submodule foreach git pull

我明白了

Entering 'bin'
fatal: Where do you want to fetch from today?
Stopping at 'bin'; script returned non-zero status.

我修复错误的第一个假设是更改path = binpath = /Users/Masi/bin. 但是,这并不能解决问题。

如何从我的 Git 中的子模块外部存储库上传内容?

4

1 回答 1

5

这通常是没有远程配置时出现的错误。
(来自这个线程

这是一个补丁,至少修复了在很久以前初始化的存储库中运行“git pull”时的回归,它不使用 .git/config 文件来指定我的远程存储库的位置。

一个更好的消息可能是这样的:

当前分支没有配置默认远程,
也没有配置默认远程“源”。

我认为由于当时无法访问,该消息错过了在早期传递中使用户友好的信息。


因此,此消息表明 .git/modules 中提到的远程仓库未在 .git/config 中声明

来自git 子模块

子模块不要与遥控器混淆,遥控器主要用于同一项目的分支;
子模块适用于您希望成为源代码树一部分的不同项目,而这两个项目的历史仍然完全独立,您无法从主项目中修改子模块的内容。

我相信您可能错过了以下步骤git submodule init

子模块初始化

初始化子模块,即将 .gitmodules 中的每个子模块名称和 url 注册到 .git/config中。
中使用的密钥.git/configsubmodule.$name.url.
此命令不会更改 .git/config 中的现有信息。
然后,您可以为本地设置自定义子模块克隆 URL,.git/config并继续 git submodule update;git submodule update --init如果您不打算自定义任何子模块位置,也可以不使用显式初始化步骤。

如果您的远程仓库(在 .git/modules 中声明)在 .git/config 中被充分引用,则您不应再收到此错误消息。

在使用(pullin)子模块之前,步骤:

git submodule init
git submodule update

仍然是必要的。

于 2009-07-20T18:43:31.163 回答