无需克隆'git submodule add'



我如何在不实际克隆其包含的所有文件的情况下将本地subsodule添加到projet中?我想避免在本地重复我的项目文件。

我知道可以实现这种方法,因为当您克隆一个包含子模型的项目时,这些项目默认情况下不会克隆。您必须手动进行:

git clone url-of-repo-containing-submodules.git
git submodule init sub-mod
git submodule update --remote

让我说,我有一个git reto meta-project ,带有外部源repo lib-sobModule

我可以破解它以避免文件重复:

cd /path/to/metaproject
git submodule add ../path/to/lib-sobmodule
git commit -m "lib-sobmodule added..."
git push
cd .. && rm -rf meta-project
git clone url-of-meta-project.git

tadam! lib-sobModule 的文件未在我的桌面上重复。但是它不是一个不错的解决方案,因为它导出了涉及git遥控器的所有内容...

是否有一个选项或方法可以阻止克隆本地项目而无需复制其包含的所有文件?

Disclamer:这几乎是一个克隆的问题,它有没有一种方法可以在不克隆的情况下进行git submodule add库存?但是,由于答案的重点是 30k git子模型的要求,因此他们对我在这里描述的更常见的用例没有给出令人满意的解决方案。

它们不是干净的解决方案,因为它的目的是克隆主项目中的模块。添加没有获得关联的源代码而没有远程的子模块是没有意义的。也许cat .git进入Metaproject/subpoduledir会说服您对此机械师。

但是我了解您的目的,我找到了"解决"此问题的两种方法:

  • 请勿添加本地子模块。而是为模块创建一个遥控器,并将此遥控器添加为主项目中的子模块。只要您不启动和更新子模型,代码就不会重复局部。

  • 第二种方法更脏一些,但是如果您不想为子模块创建遥控器,则可以很有用。您只需要在已经执行的情况下添加子模块,然后在此子模块上运行git deinit命令。只要您不再次启动subsodule

  • ,它就会使git关闭

最新更新