Skip to content

Latest commit

 

History

History
68 lines (62 loc) · 6.49 KB

plumbing-porcelain.asc

File metadata and controls

68 lines (62 loc) · 6.49 KB

配管(Plumbing)と磁器(Porcelain)

本書では、checkoutbranchremote などの約30のコマンドを用いて、Gitの使い方を説明しています。 一方、Gitには低レベルの処理を行うためのコマンドも沢山あります。これは、Gitが元々は、完全にユーザフレンドリーなVCSというよりも、VCSのためのツールキットだったことが理由です。これらのコマンドは、UNIX流につなぎ合わせたり、スクリプトから呼んだりすることを主眼において設計されています。 これらのコマンドは、通常 配管(plumbing)'' コマンドと呼ばれています。対して、よりユーザフレンドリーなコマンドは 磁器(porcelain)'' コマンドと呼ばれています。

本書のはじめの9つの章では、ほぼ磁器コマンドだけを取り扱ってきました。 一方、本章ではそのほとんどで低レベルの配管コマンドを使用します。これは、Gitの内部動作にアクセスして、Gitが、ある処理を、なぜ、どうやって行うのか確かめるためです。 これら配管コマンドの多くは、コマンドラインから直接実行されるのではなく、新しくツールやカスタムスクリプトを作る際に構成要素となることを意図して作られています。

新規の、または既存のディレクトリで git init を実行すると、Git は .git というディレクトリを作ります。Git が保管したり操作したりする対象の、ほとんどすべてがここに格納されます。 リポジトリのバックアップやクローンをしたい場合、このディレクトリをどこかへコピーするだけで、ほぼ事足ります。 基本的にこの章では、全体を通して、 .git ディレクトリの内容を取り扱います。 .git ディレクトリの中は以下のようになっています。

$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/

これが git init を実行した直後のデフォルトのリポジトリであり、デフォルトで表示される内容です。なお、環境によってはここにないファイルが表示されることもあります。 description ファイルは、GitWebプログラムでのみ使用するものなので、特に気にしなくて大丈夫です。 config ファイルには、プロジェクト固有の設定が書かれています。また、info ディレクトリにはグローバルレベルの除外設定ファイル が格納されます。これは、.gitignoreファイルに記録したくない除外パターンを書く際に使用します。 hooks ディレクトリには、クライアントサイド、または、サーバーサイドのフックスクリプトが格納されます。フックスクリプトについては ch08-customizing-git.asc で詳しく説明します。

そして、重要なのは残りの4項目です。具体的には、 HEAD ファイル、 index ファイル(まだ作成されていない)、 objects ディレクトリ、 refs ディレクトリです。 これらがGitの中核部分になります。 objects ディレクトリにはデータベースのすべてのコンテンツが保管されます。refs ディレクトリには、それらコンテンツ内のコミットオブジェクトを指すポインタ(ブランチ)が保管されます。HEAD ファイルは、現在チェックアウトしているブランチを指します。index ファイルには、Git がステージングエリアの情報を保管します。 以降の各セクションでは、Git がどのような仕組みで動くのかを詳細に見ていきます。