使用git初始化子模块

时间:2012-07-25 20:18:39

标签: git github git-submodules

我将此添加到我的应用程序中:

https://github.com/fpotter/juggernaut-cocoa

在说明中,它说:

If you have git 1.7+ git clone git://github.com/fpotter/juggernaut-cocoa.git --recursive

它没有说克隆它的位置,所以我在我的Documents文件夹中克隆它。然后我将AsyncSocket.h,AsyncSocket.m,WebSocket.h,WebSocket.m,SocketIoClient.h,SocketIoClient.m,JuggernautClient.h,JuggernautClient.m文件复制到我在我创建的名为juggernaut-cocoa的文件夹中的项目中。

然而,当文件在我的本地机器上工作时,当我推送到github时,它们永远不会被添加。我只看到一个绿色的小文件夹:

http://i47.tinypic.com/2ajnkzl.jpg

但是当我尝试从另一台计算机克隆我的存储库时,文件不存在,它们从未添加到git中。

然后我尝试将他们的项目克隆到我的Vendor文件夹中,然后运行git submodule init但得到了这个:

No submodule mapping found in .gitmodules for path 'Vendor/juggernaut-cocoa'

2 个答案:

答案 0 :(得分:0)

请注意,AsyncSocket.mWebSocket.h,...都是github.com/erichocean/cocoa-websocket的文件,即:

因此,如果修改子子模块中的任何内容,则必须:

  • 将这些修改推送到erichocean/cocoa-websocket,但也
  • 将该回购ID提交回fpotter/socketio-cocoacocoa-websocket的父回购),然后推送,然后
  • fpotter/socketio-cocoa(其父代仓库)中提交新的fpotter/juggernaut-cocoa个回购ID,并推送...

所以请确保这是你真正想做/可以做的事情(因为你需要对这些仓库有写入权限,即被声明为协作者)。

关于您的错误消息,请检查No submodule mapping found in .gitmodule for a path that's not a submodule

答案 1 :(得分:0)

如果您手动将其他项目中的文件复制到您的项目中,除非您添加它们,否则它们不会成为您的回购的一部分:

git add vendor/juggernaut-cocoa/
git commit

如果你想使用一个子模块,那么添加它不是通过手动克隆然后调用“git submodule init”来完成的。 相反,您只需致电git submodule add

首先,cd到主项目的根目录。然后

git submodule add https://github.com/fpotter/juggernaut-cocoa vendor/juggernaut-cocoa
git commit