向git添加子模块列表 [英] Add a list of submodules to the git

查看:87
本文介绍了向git添加子模块列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经克隆了一个项目并对其进行了自定义.该项目正在使用一些额外的项目作为子模块.我已经设置了我的git存储库,并将主项目推送到那里.但是我没有将子模块添加到我的git项目中.

I have cloned a project and customized it. the project is using some extra projects as submodules. I have setup mine git repository and push the main project there. but I did not add the submodules to mine git project.

我想将子模块拉到我的项目中.我知道使用以下命令,我可以一个接一个地添加子模块:

I want to pull the submodules to my project. I know using following command I can add submodules one by one :

git子模块添加<sub-m url> <path>

但是很多.还有另一种方法可以自动将它们全部添加在一起吗?这是子模块的列表:

But they are a lot. is there another way to add them automatically and all together ? here is the list of submodules :

submodule "submodules/bcg729"]
    url = git://git.linphone.org/bcg729.git
[submodule "submodules/bctoolbox"]
    url = git://git.linphone.org/bctoolbox.git
[submodule "submodules/belcard"]
    url = git://git.linphone.org/belcard.git
[submodule "belle-sip"]
    url = git://git.linphone.org/belle-sip.git
[submodule "submodules/belr"]
    url = git://git.linphone.org/belr.git
[submodule "submodules/bzrtp"]
    url = git://git.linphone.org/bzrtp.git
[submodule "submodules/cmake-builder"]
    url = git://git.linphone.org/linphone-cmake-builder.git
[submodule "submodules/externals/antlr3"]
    url = git://git.linphone.org/antlr3.git
[submodule "submodules/externals/axmlrpc"]
    url = git://git.linphone.org/axmlrpc.git
[submodule "submodules/externals/bv16-floatingpoint"]
    url = git://git.linphone.org/bv16-floatingpoint.git
[submodule "submodules/externals/cunit"]
    url = git://git.linphone.org/cunit.git
[submodule "submodules/externals/ffmpeg"]
    url = git://git.linphone.org/ffmpeg.git
[submodule "submodules/externals/gsm"]
    url = git://git.linphone.org/gsm.git
[submodule "submodules/externals/libmatroska"]
    url = git://git.linphone.org/libmatroska-c.git
[submodule "submodules/externals/libupnp"]
    url = git://git.linphone.org/libupnp.git
[submodule "submodules/externals/libvpx"]
    url = https://chromium.googlesource.com/webm/libvpx
[submodule "submodules/externals/libxml2"]
    url = git://git.gnome.org/libxml2.git
[submodule "submodules/externals/mbedtls"]
    url = git://git.linphone.org/mbedtls.git
[submodule "submodules/externals/opencore-amr"]
    url = git://git.linphone.org/opencore-amr.git
[submodule "submodules/externals/openh264"]
    url = https://github.com/cisco/openh264
[submodule "submodules/externals/opus"]
    url = git://git.linphone.org/opus.git
[submodule "submodules/externals/speex"]
    url = git://git.linphone.org/speex.git
[submodule "submodules/externals/srtp"]
    url = git://git.linphone.org/srtp.git
[submodule "submodules/externals/vo-amrwbenc"]
    url = git://git.linphone.org/vo-amrwbenc.git
[submodule "submodules/externals/x264"]
    url = git://git.linphone.org/x264.git
[submodule "submodules/linphone"]
    url = git://git.linphone.org/linphone.git
[submodule "submodules/msamr"]
    url = git://git.linphone.org/msamr.git
[submodule "submodules/mscodec2"]
    url = git://git.linphone.org/mscodec2.git
[submodule "submodules/msopenh264"]
    url = git://git.linphone.org/msopenh264.git
[submodule "submodules/mssilk"]
    url = git://git.linphone.org/mssilk.git
[submodule "submodules/mswebrtc"]
    url = git://git.linphone.org/mswebrtc.git
[submodule "submodules/msx264"]
    url = git://git.linphone.org/msx264.git
[submodule "linphone"]
    url = git://git.linphone.org/linphone.git

推荐答案

我不认为git有这种方法.但是,您可以执行一个Shell脚本来迭代您的列表,并在每个列表上分别调用git submodule add.

I don't think there is such a way with git. However, you could just do a shell script that iterates your list and calls git submodule add on each of them, one by one.

为什么只将它们复制到.gitmodules或.git/index并不能解决问题:

Why just copying them to .gitmodules or to .git/index won't do the trick:

"git submodule add"命令可完成以下操作:

The "git submodule add" command does a couple of things:

  • 它将在当前目录下克隆子模块,并且默认情况下检出master分支.
  • 它将子模块的克隆路径添加到".gitmodules"文件中,并将该文件添加到索引中,以备提交.
  • 它将子模块的当前提交ID添加到索引中,随时可以提交.
  • It clones the submodule under the current directory and by default checks out the master branch.
  • It adds the submodule's clone path to the ".gitmodules" file and adds this file to the index, ready to be committed.
  • It adds the submodule's current commit ID to the index, ready to be committed.

()

因此您将错过最后一步,并且git子模块的init/update期望提交ID已经存在.这就是为什么您需要git submodule add的原因.

So you would be missing the last step, and git submodule init/update expect the commit id to be already in place. That is why you need git submodule add.

这篇关于向git添加子模块列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆