TortoiseGit 作成直後のリポジトリフォルダの構成の確認

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

TortoiseGit ダウンロードとインストール1

TortoiseGit-2.17.0.2-64bit を使用します。

前回の記事

TortoiseGit で、バージョン管理するためのリポジトリを作成しました。
Bare リポジトリも作成して、その利用方法の違いについても紹介しました。

リポジトリ作成直後の .git フォルダの構成の確認

TortoiseGit で作成した直後のリポジトリの .git フォルダには以下の要素がありました。

  • hooks フォルダ
  • info フォルダ
  • objects フォルダ
  • refs フォルダ
  • config ファイル (テキスト形式)
  • description ファイル (テキスト形式)
  • HEAD ファイル (テキスト形式)

この中で HEAD ファイルは、前述した Git の状態を表す3つのツリーの1つの要素です。
※3つのツリーには、 HEAD, インデックス(ステージングエリア)、作業ツリー(ワーキングツリー)があります。

TortoiseGit 作成直後のリポジトリの.gitフォルダ

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

Git公式のresetコマンド説明用のリポジトリの作成6

この 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/info/grafts ファイルを介して構成されます。

Git – gitglossary Documentation

追加情報には、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/refs ディレクトリを見ると、SHA-1ハッシュ値を含むファイルがあることが分かります。 現在のプロジェクトでは、このディレクトリにファイルはありませんが、シンプルな構成のディレクトリがあります。

Git – Gitの参照

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!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました