HOWTO · Git

.git ディレクトリの説明

この記事では、.git という名前の Git フォルダーを紹介し、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 フォルダにはスクリプトファイルが保存されます。push や commit などのコマンドを実行すると、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 フォルダは、損傷を防ぐために常に非表示になっています。ファイルを削除すると、リポジトリ内の変更を復元できなくなります。