将另一Git仓库克隆至同一文件夹的影响及相关疑问
Git嵌套仓库相关问题解答
1. 嵌套仓库具体是什么样的?
嵌套仓库就是在一个已有的Git仓库(外层仓库)目录内,再克隆另一个独立的Git仓库(内层仓库)。内层仓库会有自己专属的.git目录,和外层仓库的.git完全独立——外层仓库会把内层仓库的文件夹当作普通目录处理(除非外层的.gitignore明确忽略它),内层仓库的所有版本操作(提交、分支切换等)都只作用于自身,和外层仓库互不干扰。
2. 能否在两个仓库间切换?
当然可以。Git会根据你当前所在的目录自动识别要操作的仓库:
- 在根目录(外层仓库目录)执行Git命令,操作的是外层仓库;
- 进入内层仓库的文件夹后执行Git命令,操作的是内层仓库。
3. 两个仓库同名时会如何运作?
仓库名称相同完全不影响各自的版本管理。因为它们的.git目录是分开存储的(一个在根目录,一个在内层文件夹里),Git仅依据当前目录下的.git目录来确定操作对象,所以同名仓库的提交记录、分支、配置都是完全独立的,互相不会产生关联。
关于误操作后的异常情况解释
你遇到的情况大概率是执行了git clone <新仓库地址> .(克隆到当前目录)的操作:
- 原仓库的
.gitignore被替换:因为新仓库根目录存在同名的.gitignore文件,克隆时会直接覆盖原文件; - 仅能看到新仓库的分支:克隆操作会把当前目录下原有的
.git目录替换成新仓库的.git,此时Git默认读取新的.git目录,自然只能看到新仓库的分支; - 工作目录仍显示旧仓库的文件:新仓库中不存在这些旧文件,Git不会自动删除未被仓库追踪的文件,所以它们会留在工作目录中,对于新仓库来说属于「未跟踪文件」。
内容的提问来源于stack exchange,提问作者qcabepsilon
相关产品推荐
相关产品推荐

