前回はGitをマシンにインストールしてみましたが、今回から実際に使いつつ、利用時に登場する用語なども解説していきます。
まず、Gitの構成がどうなっているのか、再度おさらいです。本シリーズの第1回目で“バージョン管理システム”について説明した際に簡単に触れましたが、リポジトリという場所でファイルを管理していきます。
リポジトリには、「ローカルリポジトリ」と「リモートリポジトリ」の2種類がありました。
- ローカルリポジトリ=自分のマシン内にあるリポジトリ
- リモートリポジトリ=サーバなどネットワーク上にあるリポジトリ
ローカルリポジトリの仕組みについて
実際にGitでファイル管理をしていく前に、リポジトリ内でデータがどのように管理されるのかを理解しておきましょう。
Gitは下記の3つのデータ領域でファイルの変更履歴を管理しています。
- 作業ディレクトリ
ローカル環境でユーザーが実際に作業するファイルが格納されている領域です。”ワーキングディレクトリ”や”ワークツリー”などとも言われますが、ここでは”作業ディレクトリ”とします。
- ステージング・エリア
作業ディレクトリ上で変更されたファイルのうち、次回のコミット対象となっているファイルを記録しておく領域です。この領域は”index”と呼んだりもします。
- Gitディレクトリ
リポジトリのすべての変更履歴を保存している領域です。ローカルにあるリポジトリの場合、このあとリモートリポジトリ(共有リポジトリ)に履歴情報を”プッシュ”する流れとなりますが、今回はローカルリポジトリ内の説明にとどめておきます。
図にするとこんなイメージかと思います。
また、Gitを操作する際によく登場する下記の用語も理解しておきましょう。
- コミット
ファイルの追加や変更の履歴を、リポジトリに保存するための操作をコミットと言います。
- プッシュ
ファイルの追加や変更の履歴をリモートリポジトリに反映するための操作をプッシュと言います。
リポジトリの構造が理解できたら、実際に自分のローカル環境にリポジトリを作成してみましょう。
ローカルリポジトリを作ってみよう
まずは自分のマシン上にローカルリポジトリを作成してみます。
とはいえ、概念を理解していれば操作自体は簡単です。
「作業用のフォルダを作成して、Gitリポジトリとして初期化するだけ」です。
手順を追って見ていきましょう。
今回は、デスクトップにGitで管理したいプロジェクト用のフォルダを作成し、ローカルリポジトリにしていってみたいと思います。
GUIを使えばこれら一連の操作がもっと簡単に行えるようになりますが、しっかりと理解したうえで運用できたほうが後々のトラブルも少ないと思いますので、あえてCUIを使って説明していきたいと思います。”ターミナル”などに抵抗がある方も試しにやってみて頂けたら理解が深まると思います。
GUIの紹介などはまた別の機会に行っていきたいと思います。
1、プロジェクト用のフォルダを作成
まずは、デスクトップ上に”git_test”というフォルダを作成します。
普通にデスクトップ上にフォルダを作成してもOKです。
ターミナルからコマンドラインで操作する場合は、まず上記のコマンドでデスクトップに移動し、
$ cd ~/Desktop
デスクトップ上に、”git_test”というフォルダを作成します。
$ mkdir git_test
2、管理したいファイルを格納
次はここに管理するドキュメントを置いてみましょう。
今回は”index.html”というファイルを作成して格納します。
3、Gitリポジトリとして初期化
ターミナルで、下記のコマンドを実行し、先ほど作成した”git_test”フォルダへ移動します。
$ cd git_test
移動したら、下記のコマンドを実行するとgitリポジトリとして初期化できます。
$ git init
フォルダ内を確認してみましょう。
“.git”というフォルダが生成されていることが確認できればOKです。
(※”.git”ファイルは不可視ファイルです。私のMacではFinderで不可視ファイルを表示できるように設定しているため表示されていますが、Macの初期設定では表示されないようになっているため、目で見て確認するにはMacの設定を変更する必要があります)
これで、ローカルリポジトリの作成ができました。
ファイルをローカルリポジトリにコミット
ローカルリポジトリ内の構造を理解したところで、さっそく変更したファイルを”作業ディレクトリ”から”ステージングエリア”へ記録、さらに”リポジトリ”からコミットする操作をしていってみましょう。
“作業ディレクトリ”から”ステージングエリア”へ
まず、git_testフォルダ内のindex.htmlを”ステージングエリア”へ記録させます。
下記のコマンドで対象ファイルをステージングエリアへ記録させることができます。
$ git add index.html
複数のファイルをステージングエリアへ移動させたい場合は、下記のように”–all”オプションを付けることで、まだコミットされていないすべてのファイルをステージングエリアへ記録させることができます。
$ git add --all
うまくいったか確認してみましょう。
下記のコマンドで現在の状態が確認できます。
$ git status
“Changes to be committed”と表示され、”new file : index.html”と記載がありますが、「コミット対象として記録されている新しいファイルがあります」という意味かと思います。
試しに、”index_2.html”というファイルを作成し、再度状態を確認してみましょう。
“Untracked files”と表示され、”index_2.html”が表示されていると思いますが、「コミット対象として記録されていないファイルがある」ことを示しています。
“リポジトリ”へコミット
次に、”リポジトリ”へコミットしてみましょう。
下記のコマンドで”コミット”することができますが、このコマンドを実行するとテキストエディターが開き、コミットメッセージの入力を求められます。
$ git commit
テキストエディターを開かないで、コミットメッセージを入力するには下記のように”-m”オプションを付けてコマンドを実行します。
下記の”xxxxxx”の部分にコミットメッセージを入力してください。
$ git commit -m "xxxxxx"
ローカルリポジトリへのコミットが完了しました。
これでファイルの変更履歴が、リポジトリに保存されたことになります。
確認してみましょう。
下記のコマンドで、変更履歴が一覧表示できます。
$ git log
コミットID、コミットしたユーザー名とメールアドレス、コミットした時間、コミットメッセージなどの情報が表示されました。
これでファイルの変更履歴がローカルリポジトリに保存された状態になりました。
ローカルリポジトリでファイル管理を行うまでをご説明しました。あとは運用して操作に慣れていくのみです。とにかくファイルを変更したらコミットしましょう。コミットしておけば、過去の変更履歴を確認したり追跡することができるので、いつでも元に戻せたりします。
次回は、リモートリポジトリを使って他のユーザーとファイルを共有しながらバージョン管理を行う方法について説明していきます。
(用語の定義など一部「開発効率をUPする Git逆引き入門(シーアンドアール研究者)」を参照)