“.git”文件夹中不包含什么?

10
Git官网(重点在这里):

在新建或现有目录中运行 git init 时,Git 会创建 .git 目录,几乎所有 Git 存储和操作的内容都在这个目录中。如果您想要备份或克隆存储库,将此单个目录复制到其他位置可以为您提供几乎所有需要的内容。

他们在这里使用了 "几乎" 和 "所有" 这两个词而没有详细解释。.git目录中没有什么内容?如果我想要备份或克隆我的存储库,将该单个目录复制到其他地方会遗漏什么内容呢?


全局配置不包含在.git目录中。 - Maze
@Maze 但它们并不是特定于存储库的。 - TimWolla
@TimWolla:没错,但这些都是“Git 存储和操作”的内容。 - Keith Thompson
3个回答

8

Git不记录以下内容:

  • 文件组
  • 文件所有者
  • 文件权限(除了“是否可执行”)
  • 扩展属性
  • 空文件夹
  • (.gitignore中的任何内容,但这可能是想要的)
  • gitmodules

可能这篇文章可以为您提供更多信息。


Git 不记录的内容与复制 .git 目录时无法获取的内容是不同的。 - Andrew C

5

除了 .git 文件夹本身外,您的仓库中还有另外一些 .git 文件,特别是:

.gitignore # contains the files that you do not want in the repository
.gitmodules # contains the information on submodules

如果您有一个子模块,您将拥有一个纯文本文件.git,它指向“真实的存储库目录” - 请参阅Git存储库布局文档


你不检查这些吗?如果不检查,为什么不检查? - Edward Thomson
我认为你不会检查.git纯文本文件,但是我可能错了。我见过人们既提交又不提交.gitignore文件。 - Michael

1
您的用户/全局配置文件通常在~/.gitconfig中。
系统配置文件通常在$(prefix)/etc/gitconfig中。
子模块信息将存储在您的工作目录顶层的.gitmodules文件中。
有关忽略文件的信息可能来自于您的工作目录中任意数量的.gitignore文件。但是,它也可以通过git config --global core.excludesfile ~/.gitignore_global或类似方式的排除文件来获取。
如果在.git/objects/info/alternates中配置了替代对象存储或引用存储库,则会存在外部对象依赖项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接