git如何设置嵌套仓库(设置子树或子模块),并解决直接将一个仓库拖拽到另一个仓库中导致的问题

git 将一个仓库拷贝到另一个仓库的文件夹下。默认git并不会处理,上传上去之后,只会创建一个文件夹,但是这个文件夹点不开。

git add . 的时候,会报出警告:

bash 复制代码
警告:正在添加嵌入式 git 仓库:client
提示: You've added another git repository inside your current repository.
提示: Clones of the outer repository will not contain the contents of
提示: the embedded repository and will not know how to obtain it.
提示: If you meant to add a submodule, use:
提示:
提示:  git submodule add <url> client
提示:
提示: If you added this path by mistake, you can remove it from the
提示: index with:
提示:
提示:  git rm --cached client
提示:
提示: See "git help submodule" for more information.
提示: Disable this message with "git config advice.addEmbeddedRepo false"

这个意思是,正在将一个嵌套的 Git 仓库(子仓库)添加到当前的 Git 仓库中。具体来说,client 目录内似乎已经是一个独立的 Git 仓库,这会导致一些问题:

嵌套 Git 仓库:

Git 检测到 client 目录中有一个 .git 子目录,这意味着 client 目录本身是一个 Git 仓库(即子仓库或嵌套仓库)。

git并不知道,你想要怎么处理该仓库。所以直接将这样的子仓库添加到父仓库中,会导致问题------父仓库不会自动处理子仓库的内容和版本控制。

因此需要显式的指定添加的是什么:

如果是添加一个子模块,则采用 git submodule add <url> client

如果是添加一个子库,并不应该直接将该库拖拽进来。

具体解决方案:

1. 如果 client 应该是子模块 :

如果 client 目录实际上应该是一个子模块,那么你需要正确地将其添加为子模块:

bash 复制代码
git rm --cached client
git submodule add <url> client
  • <url> 是子模块的 Git 仓库 URL。
  • git rm --cached client 从当前仓库的索引中移除 client 目录(不会删除实际目录)。

2. 如果 client 应该是子树 :

如果 client 目录实际上应该作为子树的一部分,你需要从父仓库中移除它,然后再正确地将其作为子树添加。

bash 复制代码
git rm --cached client
rm -rf client
git commit -m "Remove client submodule"

然后重新将 client 作为子树添加到父仓库:

bash 复制代码
git subtree add --prefix=client <url> branch-name
  • <url> 是子树的 Git 仓库 URL。
  • branch-name 是子树仓库中的分支名称。

添加之后,会直接生成一个commit

总结

  • 子模块 : 如果 client 目录应该是一个独立的仓库并且被作为子模块管理,使用 git submodule add
  • 子树 : 如果 client 目录应该嵌入到父仓库中作为子树,先移除它,再用 git subtree add 重新添加。

通过这些步骤,就可以解决嵌套仓库导致的问题,并确保 client 目录被正确地添加到父仓库中。

相关推荐
西岭千秋雪_1 小时前
谷粒商城のElasticsearch
java·大数据·服务器·spring boot·elasticsearch·搜索引擎
Data 3171 小时前
Hadoop生态圈拓展内容(二)
大数据·数据仓库·hive·hadoop
江木1232 小时前
Git常用命令(记录)
git
剑海风云2 小时前
Google大数据架构技术栈
大数据·google·架构·bigdata
青云交2 小时前
大数据新视界 --大数据大厂之MongoDB与大数据:灵活文档数据库的应用场景
大数据·数据库·mongodb·非关系型数据库·文档存储·查询功能、数据处理·开发效率、应用场景、高可扩展性
wumingxiaoyao2 小时前
Big Data 流处理框架 Flink
大数据·flink·big data·流处理框架·实时数据处理
青云交2 小时前
大数据新视界 --大数据大厂之HBase深度探寻:大规模数据存储与查询的卓越方案
大数据·数据库·hbase·数据存储·性能优势、问题解决、应用领域·可扩展性、高可靠性·读写性能、集群管理
茜茜西西CeCe2 小时前
大数据处理技术:HBase的安装与基本操作
java·大数据·数据库·hbase·头歌·大数据处理技术
易云码2 小时前
【工作流集成】springboot+vue工作流审批系统(实际源码)
大数据·后端·低代码·系统安全·设计规范
GIS数据转换器3 小时前
跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例
大数据·数据库·人工智能·游戏·gis·智慧城市