此问题基于this thread。
我的.gitmodules在我家
[submodule "bin"]
path = bin
url = git://github.com/masi/bin.git
我家中的文件夹-structure:
~
|-- [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 = bin
更改为path = /Users/Masi/bin
。但是,这并没有解决问题。
如何从我的Git中作为子模块的外部存储库上传内容?
答案 0 :(得分:5)
这通常是没有配置遥控器时发生的错误 (来自this thread)
在很久以前初始化的存储库中运行“git pull”并且不使用.git / config文件指定远程存储库的位置时,这是一个至少修复回归的补丁。
更好的信息可能是:
没有为您当前的分支配置默认远程,
并且未配置默认的远程“origin”。我认为该消息在之前的通行证中错过了用户友好的原因 当时无法进入。
因此,此消息表明.git / modules中提到的远程仓库未在.git / config中声明
子模块不应与遥控器混淆,遥控器主要用于同一项目的分支;
子模块适用于您希望成为源树的一部分的不同项目,而两个项目的历史仍然完全独立,您无法在主项目中修改子模块的内容。
我相信你可能错过了git submodule init
的步骤:
子模块初始化
初始化子模块,即。将.gitmodules中的每个子模块名称和URL注册到.git / config 。
.git/config
中使用的密钥是submodule.$name.url
此命令不会更改.git / config中的现有信息 然后,您可以在.git/config
中为您的本地设置自定义子模块克隆URL,然后继续进行git子模块更新;如果您不打算自定义任何子模块位置,也可以在没有显式初始化步骤的情况下使用git submodule update --init
。
如果您的远程仓库(在.git / modules中声明)在.git / config中被充分引用,则不应再出现此错误消息。
在使用(pullin)子模块之前,步骤:
git submodule init
git submodule update
仍然是必要的。