.git 目录解释

在本文中,我们将介绍 Git 文件夹 .git。我们将介绍 Git 创建文件夹的原因及其包含的内容。

Git 中的 .git 文件夹是什么

Git 是一个广泛使用的版本控制系统。Git 仓库存储你在项目中所做的更改。

.git 目录将所有数据存储在你的仓库中。此文件夹可以存储从有关提交的信息到仓库电子邮件地址的任何内容。

你还将找到一个包含你的提交历史记录的日志。使用此日志,你可以恢复所需的代码版本。

当你运行 git init 命令来初始化一个空仓库时,Git 会创建 .git 文件夹。

你可以通过运行以下命令来查看该文件夹。

ls -C .git

你可以期待如下所示的输出。

$ ls -C .git
COMMIT_EDITMSG  HEAD       config       hooks/  info/  objects/     refs/
FETCH_HEAD      ORIG_HEAD  description  index   logs/  packed-refs

让我们进一步探索这个目录的内容。

  1. hooks/hooks 文件夹存储脚本文件。当你运行诸如 pushcommit 之类的命令时,Git 会执行这些脚本文件。
  2. objects/ – 此文件夹包含 Git 的对象数据库。
  3. config – 这是 Git 的配置文件。
  4. refs/ – 此文件夹包含有关分支和标签的数据。
  5. HEAD – 此文件存储有关你的主分支的信息。
  6. index – 此二进制文件包含暂存数据。

你可以通过运行以下命令查看对象数据库包含的内容。

ls -C .git/objects

你应该得到如下所示的输出。

$ ls -C .git/objects
03/  24/  30/  77/  87/  ac/  b6/  c6/  e1/  ec/  info/
19/  29/  4b/  78/  8b/  b1/  c3/  d4/  e6/  f6/  pack/
1f/  2d/  67/  7b/  a6/  b2/  c4/  dd/  e9/  fa/

你可以使用 ls -C .git/objects/<dir> 命令查询数据库的对象。

让我们探索 config 文件。运行 cat .git/config 命令,如下所示。

pc@JOHN MINGW64 ~/Git (main)
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[gui]
        wmstate = normal
        geometry = 893x435+208+208 175 196
[remote "origin"]
        url = https://github.com/Wachira11ke/Delftscopetech.git
        fetch = +refs/heads/*:refs/remotes/origin/*

HEAD 文件默认引用你的主分支。

.git 文件夹始终隐藏以防止损坏。如果删除该文件,则无法恢复仓库中的更改。