存储库是.git文件夹还是带有.git文件夹的目录?

时间:2019-12-16 00:27:45

标签: git

根据https://www.git-tower.com/learn/git/ebook/en/command-line/basics/basic-workflow#start

  

在Git中,存储库只是一个简单的隐藏文件夹,名为“ .git”,位于   项目的根目录。

但是Git for beginners: The definitive practical guide

  

git仓库只是一个包含特殊.git的目录   目录

“存储库”是指隐藏的.git文件夹还是包含.git目录的目录?

我知道当您git commit时,您正在将更改记录到本地.git文件夹中。这是否意味着当我们推送到类似GitHub上托管的远程存储库时,我们只是推送.git文件夹的内容而已?

1 个答案:

答案 0 :(得分:3)

  

“存储库”是指隐藏的.git文件夹还是包含.git目录的目录?

从严格意义上讲,存储库仅是.git/子目录。包含.git/和所有项目文件的目录称为"working tree",从严格意义上讲,.git/子目录不属于工作树。

但是人是人,我们使用宽松的术语,所以我们经常将整个工作树+ .git/称为“存储库”或“项目”或其他。

  

我知道,当您进行git commit时,您会将更改记录到本地.git文件夹中。这是否意味着当我们推送到类似GitHub上托管的远程存储库时,我们只是推送.git文件夹的内容而已?

简短的回答:是的。

更长的答案很复杂。是的,git push仅推送来自Git对象数据库的对象,并推送引用(分支和标签)。但是.git/中还有更多的东西永远不会被推送或拉出:配置文件,挂钩以及与当前存储库相关的许多其他文件和目录。