.git ディレクトリの説明

John Wachira 2022年8月23日
.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 フォルダは、損傷を防ぐために常に非表示になっています。ファイルを削除すると、リポジトリ内の変更を復元できなくなります。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Directory