Gitのインストールは完了しただろうか?
このページではGitによるバージョン管理の基本的な流れについてお伝えする。まずは全体を理解しておこう。
Gitによるバージョン管理の基本的な流れ
Gitのバージョン管理は分散型だ。ローカルにあるリポジトリがGitサーバ上のリモート・リポジトリを共有している。
このローカルのリポジトリによってプロジェクトのワーキング・ツリーが管理される。
ワーキング・ツリーとはプロジェクトのあるバージョンをデータベースから取り出したもののことだ。チェックアウトという動作をすることで、取り出すことができる。
言葉だけだとわかりにくいため、下記の図を見ていただきたい。
実際の開発作業では、ワーキング・ツリー毎に開発は行われ、作業が進むとワーキング・ツリーにあるコンテンツが変更される。
分散型では、その変更作業が他のリポジトリとは独立してローカルのリポジトリに記録されることを許している。
このためローカルのリポジトリはコンテンツが異なることになるが、変更されたコンテンツは、ある時点でリモート・リポジトリにバージョン番号を付けてまとめられる。
これからの説明の中で単に「リポジトリ」と書かれている場合、それはローカルにあるリポジトリを指している。
また、Gitサーバにあってローカルのリポジトリが共有するリポジトリを「リモート・リポジトリ」と呼ぶこととする。
では、変更がどのようにリポジトリに記録されていくかについて見てみよう。
変更のリポジトリへの記録
変更されたコンテンツをリポジトリに記録するために、Gitはコンテンツの状態をしっかり管理しているのだ。コンテンツの状態はコンテンツに対する作業とGitへのコマンドによって決まる。
コマンドの基本的な書き方は簡単だ。
git [コマンド] [オプション]
作業の流れとコマンドとコンテンツの状態の関係を理解しておこう。
以下の図ようにコンテンツの状態が管理されている。「ステージされた」とは、コミットすることのできる段階にあるということだ。それで、図から分かるようにGitではステージされた状態のコンテンツだけがコミットの対象となるのだ。また、コミットされて変更がリポジトリに記録されたコンテンツだけが削除できるようにもなっている。つまり、変更は必ず記録されるということだ。
コンテンツが新たに作成されて、削除されるまでの状態の変化は次のようになっている。
- プロジェクトのワーキング・ツリーの中でコンテンツが新たに作成されると、コンテンツは追跡されていない(Untracked)状態となる。
- 追跡されていないコンテンツが追加されると、Gitは追跡を開始する。コンテンツはステージされた(Staged)状態になる。
- ステージされた状態にあるコンテンツがコミットされると、その変更はリポジトリに記録される。コンテンツは修正されていない(Unmodified)状態になる。
- 修正されていないコンテンツが削除されると、追跡が中止される。コンテンツは追跡されていない状態になる。
- 修正されていないコンテンツが修正作業によって変更されると、自動的に修正された(Modified)状態と認識する。
- 修正されたコンテンツがステージされると、そのコンテンツはステージされた状態になる。
では、基本的なGitの使い方の流れを見てみよう。
基本的な使い方と流れ
Gitを使うためにGit Bashを起動してコンソールからGitのコマンドを実行している。この時、Git Bashは下記の画面を表示する。
Git Bashを使うために用意された様々なコマンドをここから入力することができるのだ。
また、Windows上でGitを実行することが前提となっているので、ディレクトリを/c/gitworkのように入力する。これは、Windowsのディレクトリの書き方でいうとC:\gitworkに相当する。
Gitを使ったバージョン管理の作業の流れは次の通りだ。最初に入れ物であるリポジトリにワーキング・ツリーの中から選んだコンテンツの変更を記録する。この流れは以下のセクションを参照して欲しい。
- リポジトリを作成する。
- 変更をリポジトリに記録する。
次にリポジトリの変更をGitサーバにあるリモート・リポジトリに記録し共有する。この流れは、以下のセクションを参照して欲しい。
- リモート・リポジトリを作成する。
- リポジトリの変更を共有する。
では、バージョン管理の作業の流れの中でそれぞれのGitのコマンドがどのように使われているかを各セクションで解説する。
まとめ
このページではGitの使い方の流れについてざっくりと概要をご説明してきた。なんとなくイメージはついただろうか? 参考にしていただければ幸いだ。