Git仓库内嵌套克隆的关联关系及删除外层.git的影响问询
咱们先把这两个问题拆解开来聊清楚:
两个仓库的关系
你通过git clone创建的这两个仓库是完全独立的版本控制单元,互相没有任何关联:
hello_world是一个独立的Git仓库,它的版本历史、分支、配置都存储在自身的.git目录中;- 你在
hello_world目录下克隆的another_repo,只是物理上位于hello_world的文件夹内,但它拥有自己独立的.git目录,所有版本控制相关的操作(提交、拉取、推送等)都是完全独立的。 - 简单来说,Git不会把
another_repo当成hello_world仓库的一部分——除非你特意使用Git子模块(submodule)功能,但这里你用的是普通git clone命令,所以两者只有文件夹的嵌套关系,没有版本控制层面的联系。
删除
hello_world的.git目录的影响 如果删掉hello_world里的.git目录,会带来这些变化:
hello_world不再是Git仓库:所有和这个仓库相关的版本历史(提交记录、分支、标签)、远程仓库关联、本地配置都会被彻底删除,你无法再对hello_world目录执行任何Git命令(比如git commit、git push)。another_repo完全不受影响:因为它有自己独立的.git目录,所有版本控制功能都能正常使用,你依然可以在another_repo里做提交、拉取代码等操作,它的版本历史不会因为父目录的.git被删除而丢失。
内容的提问来源于stack exchange,提问作者Bo Zhang




