Is it possible to make Git aware of an existing .gitmodules file?
我添加了一个子模块:
1 | git submodule add git://github.com/chneukirchen/rack.git rack |
文件
1 2 3 | [submodule"rack"] path = rack url = git://github.com/chneukirchen/rack.git |
当然,Git知道:
1 2 | git submodule status 30fb044db6ba5ea874ebc44a43bbd80a42676405 rack (1.3.0-64-g30fb044) |
我手工添加了一个子模块,例如,添加到该文件:
1 2 3 | [submodule"redcloth"] path = plugins/redcloth url = git://github.com/jgarber/redcloth.git |
我重复了前面的命令:
1 2 3 4 5 6 7 8 | git submodule init Submodule 'rack' () registered for path 'rack' git submodule update (no output) git submodule status 30fb044db6ba5ea874ebc44a43bbd80a42676405 rack (1.3.0-64-g30fb044) |
所以,据我所知,我手工添加的内容被忽略了。有什么方法可以让Git知道手工添加到.gitmodules文件中的行吗?
注意:我还尝试手工将行添加到
好吧,多亏了亚当,我找到了一个很明显的答案,不过,这是:
如果你检查
因此,手工添加子模块的回购与通过
用同样的例子回答,您应该:
1 | $ git clone git://github.com/jgarber/redcloth.git plugins/redcloth |
将以下内容添加到
1 2 | [submodule"redcloth"] url = git://github.com/jgarber/redcloth.git |
确保至少将它们添加到git repo中:
1 | $ git add plugins/redcloth |
然后检查Git是否"知道":
1 2 3 | $ git submodule status 0766810ab46f1ed12817c48746e867775609bde8 plugins/redcloth (v4.2.8) 30fb044db6ba5ea874ebc44a43bbd80a42676405 rack (1.3.0-64-g30fb044) |
*请注意,该文件中不需要您在
你需要跑步
1 | git submodule update --init --recursive |
更新:
子模块add命令实际上克隆了整个repo并将sha1添加到索引中。
这可能是新的行为,与以前的Git版本相比,克隆没有立即完成。
如果索引中没有将模块指向特定提交的条目,那么git子模块更新将拒绝执行任何操作。这似乎是一种新的行为。
希望这有帮助。