gpt4 book ai didi

git - 'git submodule add' 不克隆它

转载 作者:太空狗 更新时间:2023-10-29 13:03:44 26 4
gpt4 key购买 nike

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

我知道这种事情是可以实现的,因为当你克隆一个包含子模块的项目时,默认情况下不会克隆这些。您必须手动执行此操作:

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

比方说,我有一个 git 存储库 meta-project 和一个外源存储库 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

塔达姆! lib-sobmodule 的文件在我的桌面上没有重复。但这不是一个很好的解决方案,因为它导出然后将所有内容导入/从 git 远程...

是否有一个选项或方法可以防止克隆本地项目而不必复制它包含的所有文件?

免责声明:这几乎是 Is there a way to git submodule add a repo without cloning it? 的克隆问题。但是由于答案集中在 30K git 子模块要求上,因此他们没有为我在这里描述的更常见的用例提供令人满意的解决方案。

最佳答案

它们不是干净的解决方案,因为它的目的是在主项目中克隆模块。在没有获取相关源代码的情况下添加没有远程的子模块是没有意义的。也许 cat .git 到 metaproject/submoduledir 会让你相信这个机制。

但是我理解你的目的,我找到了两种方法来“解决”这个问题:

  • 不要添加本地子模块。而是为模块创建一个 Remote ,并将此 Remote 作为子模块添加到您的主项目中。只要您不初始化和更新您的子模块,代码就不会在本地重复。

  • 第二种方法有点麻烦,但如果您不想为您的子模块创建一个远程模块,它会很有用。你只需要像你已经做的那样添加子模块,然后在这个子模块上运行 git deinit 命令。只要您不再初始化子模块,它就会让 Git 关闭

关于git - 'git submodule add' 不克隆它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com