Windows シェル拡張(エクスプローラに機能を追加)で Git を操作できる無料の Git クライアントソフトウェア TortoiseGit で、リポジトリを作成した直後に存在する Git の管理情報を保持する .git フォルダのファイル・フォルダの構成とその簡単な説明を、公式の説明を引用しながら確認します。

※ TortoiseGit-2.17.0.2-64bit を使用します。
前回の記事
TortoiseGit で、バージョン管理するためのリポジトリを作成しました。
Bare リポジトリも作成して、その利用方法の違いについても紹介しました。
リポジトリ作成直後の .git フォルダの構成の確認
TortoiseGit で作成した直後のリポジトリの .git フォルダには以下の要素がありました。
- hooks フォルダ
- info フォルダ
- objects フォルダ
- refs フォルダ
- config ファイル (テキスト形式)
- description ファイル (テキスト形式)
- HEAD ファイル (テキスト形式)
この中で HEAD ファイルは、前述した Git の状態を表す3つのツリーの1つの要素です。
※3つのツリーには、 HEAD, インデックス(ステージングエリア)、作業ツリー(ワーキングツリー)があります。

add コマンドで、ファイルを次のコミットに含めるために、ステージングエリアに追加した場合は、 index フォルダも作成され、これが Git の状態を表す3つのツリーの1つ(インデックス)のデータの場所になります。

この index ファイルが作成されるタイミングについては、以下の記事を参照してください。
hooks フォルダ
hooks フォルダは、Gitのフック(特定のイベント時に実行されるスクリプト)を保持します。
Hooks are programs you can place in a hooks directory to trigger actions at certain points in git’s execution. Hooks that don’t have the executable bit set are ignored.
フックは、Git 実行の特定の時点でアクションをトリガーするためにフック ディレクトリに配置できるプログラムです。実行可能ビットが設定されていないフックは無視されます。Git – githooks Documentation と Google 翻訳
info フォルダ
info フォルダは、リポジトリに関する追加情報、高速化するための情報などが含まれます。
“コミットグラフ” ファイルは、コミットグラフのウォークを高速化するための コミットグラフ の補完的な表現です。”コミットグラフ” ファイルは、.git/objects/info ディレクトリまたは別のオブジェクトデータベースの info ディレクトリに格納されます。
~略~
移植を使用すると、コミットの偽の祖先情報を記録することで、2つの異なる開発ラインを結合できます。このようにして、Gitに コミット の 親 のセット が、コミットが作成されたときに記録したものとは異なるというふりをさせることができます。
Git – gitglossary Documentation.git/info/grafts
ファイルを介して構成されます。
追加情報には、info/exclude フォルダ内に保持される、無視するファイルのパターンなどが含まれます。
gitignore – Specifies intentionally untracked files to ignore
gitignore - 意図的に追跡されていないファイルを無視するように指定します$XDG_CONFIG_HOME/git/ignore, $GIT_DIR/info/exclude, .gitignore
Git – gitignore Documentation と Google 翻訳と、一部太字修飾
objects フォルダ
objects フォルダは、コミットされた情報、オブジェクトデータベースを保持します。
These three main Git objects — the blob, the tree, and the commit — are initially stored as separate files in your
.git/objects
directory. Here are all the objects in the example directory now, commented with what they store:これら 3 つの主要な Git オブジェクト (BLOB、ツリー、コミット) は、最初は .git/objects ディレクトリに個別のファイルとして保存されます。以下に、サンプル ディレクトリ内のすべてのオブジェクトを、格納する内容をコメント化して示します。Git – Git Objects と Google 翻訳
refs フォルダ
refs フォルダは、ブランチ、タグの情報を保持します。
コミットの位置は、1a410e のようなアルファベットや数字の羅列であるコミットハッシュで管理されていて、そのコミットハッシュで指定できますが、これにわかりやすい名前をつけたもの参照 (refs) と呼び、これを refs フォルダで管理します。
git log 1a410e
のように実行すれば、すべての歴史に目を通すことができます。しかし、歴史を辿ってすべてのオブジェクトを探しだすには、1a410e
が最後のコミットであることを覚えていなければならないのは変わりません。 SHA-1ハッシュ値をシンプルな名前で保存できれば、生のSHA-1ハッシュ値ではなく、その名前をポインタとして使用できます。Gitでは、これは “参照” ないしは “refs” と呼ばれます。
Git – Gitの参照.git/refs
ディレクトリを見ると、SHA-1ハッシュ値を含むファイルがあることが分かります。 現在のプロジェクトでは、このディレクトリにファイルはありませんが、シンプルな構成のディレクトリがあります。
config ファイル
config ファイルには、サーバに配置してリモートリポジトリとして使用される Bare リポジトリであるかどうかなどの、リポジトリの設定が記述されています。
[core]
bare = false
repositoryformatversion = 0
filemode = false
symlinks = false
ignorecase = true
logallrefupdates = true
config ファイルは、 git config コマンドでアクセスできます。
.git にある config ファイルは、ローカルレベルの config ファイルです。
他にもグローバル・システムレベルの config ファイルが他の場所にあります。
git-config – Get and set repository or global options
git-config - リポジトリまたはグローバル オプションを取得および設定しますYou can query/set/replace/unset options with this command. The name is actually the section and the key separated by a dot, and the value will be escaped.
このコマンドを使用して、オプションを照会/設定/置換/設定解除できます。名前は実際にはドットで区切られたセクションとキーであり、値はエスケープされます。Git – git-config Documentation と Google 翻訳
description ファイル
description ファイルには、リポジトリの説明がテキストで記述されています。
以下は、作成直後の .git/description ファイルの中身です。
リポジトリの既定の説明文が英文で書かれています。
Unnamed repository; edit this file 'description' to name the repository.
おそらく、 GitHub でリポジトリを作成するときに任意で入力するリポジトリの簡易説明文の Description に対応すると思います。
HEAD ファイル
HEAD ファイルには、参照しているコミット位置を指すブランチ(例ではデフォルトの master ブランチ)が設定されています。
ブランチが HEAD ファイルに設定されている場合、そのブランチの tip (先端)である、そのブランチの最新のコミット位置が参照されています。
この HEAD が指しているコミット位置( refs/heads/master の場合は master ブランチの最新のコミット位置)を基準にして差分などを確認できます。
ref: refs/heads/master
Usually the HEAD file is a symbolic reference to the branch you’re currently on. By symbolic reference, we mean that unlike a normal reference, it contains a pointer to another reference.
通常、HEAD ファイルは現在いるブランチへのシンボリック参照です。シンボリック参照とは、通常の参照とは異なり、別の参照へのポインタが含まれていることを意味します。Git – Git References と Google 翻訳
分離された HEAD という状態の場合は、ブランチではなく、コミットハッシュが指定される場合があります。
HEAD
現在の branch。詳細: ワーキングツリー は通常、HEADによって参照されるツリーの状態から派生します。HEADはリポジトリ内の ヘッド の1つを参照するものですが、 分離したHEAD を使用する場合は、任意のコミットを直接参照します。
Git – gitglossary Documentation
まとめ
今回は、Windows シェル拡張(エクスプローラに機能を追加)で Git を操作できる無料の Git クライアントソフトウェア TortoiseGit で、リポジトリを作成した直後に存在する Git の管理情報を保持する .git フォルダのファイル・フォルダの構成とその簡単な説明を、公式の説明を引用しながら確認しました。
参照サイト Thank You!
- Git
- TortoiseGit – Windows Shell Interface to Git
- Git – git-checkout Documentation
- Git – githooks Documentation
- Git – Gitの参照
- Git – 歴史の書き換え
- Git – git-config Documentation
- Git – gitglossary Documentation
- Git – Git References
- Git – リセットコマンド詳説
- Git – git-add Documentation
記事一覧 → Compota-Soft-Press
コメント