Gitをまったく使ったことがなくても大丈夫、基本操作と用語を解説『動かして学ぶ!Git入門』|翔泳社の本

Gitをまったく使ったことがなくても大丈夫、基本操作と用語を解説『動かして学ぶ!Git入門』

2021/11/11 07:00

 プログラムの変更履歴などバージョン管理を行えるサービスのGit。今やエンジニアには不可欠となったGitの使い方を解説した『動かして学ぶ!Git入門』(翔泳社)が発売中です。本書はGitを使ったことがない、これから試してみようと考えている方向けの入門書。今回は本書から「Chapter1 Gitの基本」を紹介します。

本記事は『動かして学ぶ!Git入門』の「Chapter1 Gitの基本」を抜粋したものです。掲載にあたって一部を編集しています。

バージョン管理システムとは

 ソフトウェアを開発していると、プログラムにバグを入れてしまって以前のファイルの状態に戻したくなったり、そうでなくても以前のファイル内容を見たくなったりすることがあります。そんなときに便利なのがバージョン管理システムです。

 バージョン管理システムとは、ファイルの履歴を管理するシステムです。プログラマは、ファイルのこの状態をとっておきたいと思ったときに、そのファイルの内容をバージョン管理システムに入れます。この操作をチェックインといいます。このチェックインされた状態が、1つのバージョンになります。バージョンを入れる場所をリポジトリと呼びます(図1.1)。

図1.1:バージョン
図1.1:バージョン

 適当なときにチェックインしておくことで、後でその状態に戻したりできます。バージョン管理システムに入っているバージョンを取り出すことをチェックアウトといいます(図1.2)。

図1.2:チェックインとチェックアウト
図1.2:チェックインとチェックアウト

Gitでのバージョン管理

 Gitにおけるバージョンは、ファイルではなくて、あるディレクトリを根とする木(ディレクトリツリー)です。Gitではチェックインすることをコミットするといいます。

 バージョン管理の対象としているディレクトリで、現在のディレクトリツリーの状態をコミットすると、そのディレクトリツリーが1つのバージョンとなってリポジトリに入ります。Gitではこの1つのバージョンをコミットと呼びます。つまり、コミットする(動詞)と、コミット(名詞)が1つ作られるのです(図1.3)。

図1.3: Gitでのバージョン管理
図1.3: Gitでのバージョン管理

フォルダとディレクトリ

 ディレクトリは、macOSやWindowsではフォルダと呼ばれます。ディレクトリツリーは、そのフォルダの中に入っているすべてのフォルダやファイルの全体です。図1.4の左のようなフォルダの構造は、右の形のディレクトリツリーで表されます。

図1.4:フォルダの構造とディレクトリツリー
図1.4:フォルダの構造とディレクトリツリー

Gitのディレクトリ構成

 Gitでバージョン管理をしているプロジェクトのディレクトリ構成は図1.5のようになります。

図1.5:プロジェクトのディレクトリ構成
図1.5:プロジェクトのディレクトリ構成

 作業ツリーは、開発をしているディレクトリツリーです。プログラマがプログラムを編集したりコンパイルしたりする場所です。Gitは、作業ツリーのトップのディレクトリに.gitというディレクトリを作って、バージョン管理に必要な情報をここに入れます。その中にある大事なものとして、先ほど出てきたリポジトリと、ステージがあります(ステージは、ステージングエリアとか、インデックス、キャッシュなどとも呼ばれます。本書では動詞「ステージする」に合わせて簡単に「ステージ」と呼ぶことにします。)。

 ステージは、作業ツリーとリポジトリの間にある領域です。プログラマはまず、作業ツリーの内容をここにコピーします。この操作をステージするといいます。必要なファイルをすべてステージしてから、コミットします。そうすると、ステージの内容がそのコミットの内容になります。作業ツリーをそのままコミットするのでなく、このように一旦ステージに準備してからコミットするので、作業ツリーのファイルのうちコミットするものを選ぶこともできます。

 逆にチェックアウトするときにも、ステージを経由します。チェックアウトしたいコミットを指定してチェックアウトすると、そのコミットがステージにコピーされ、それがまた作業ツリーにコピーされます。これによってファイルが取り出されます。

分散バージョン管理システム

 Gitは分散バージョン管理システムと呼ばれます。分散バージョン管理システムとは、同じプロジェクトのリポジトリをネットワーク上に複数置いて管理できるバージョン管理システムのことです。複数人が同じプロジェクトで開発する際に便利です。Gitではよく図1.6のような構成で分散バージョン管理を行ないます。

図1.6:複数の開発者による分散バージョン管理
図1.6:複数の開発者による分散バージョン管理

 この構成では、リポジトリが3つあります。開発者それぞれのコンピュータにあるリポジトリと、サーバにあるリポジトリです。サーバには普通、裸のリポジトリという、ステージや作業ツリーを持たないリポジトリを置きます。開発者がそこで開発をしないためです。

 また、図1.7の構成も一般的です。この構成では、中央リポジトリに書き込めるのは管理者だけになります。

図1.7:管理者を置く構成
図1.7:管理者を置く構成

 このようにGitでは、プロジェクトの要求に応じたさまざまなリポジトリの配置が可能です。

Gitのコマンドとヘルプ

 Gitはgitというコマンドで操作します。このコマンドにはたくさんのサブコマンドがあります。たとえばサブコマンドhelpを使って、

$ git help

とすれば、使い方の説明が表示されます。また、helpの後にサブコマンドを指定すると、そのサブコマンドの説明を見ることができます。たとえばgit configというサブコマンドがあります。このサブコマンドは、

$ git config 引数…

として使います。そのヘルプは、

$ git help config

とすると見ることができます。

 gitのサブコマンドはGitコマンドと呼ばれます。つまりhelpやconfigはGitコマンドです。

演習

 git helpコマンドを実行してヘルプを表示させてみましょう。

動かして学ぶ!Git入門

Amazon SEshop その他

動かして学ぶ!Git入門

著者:冨永和人
発売日:2021年11月4日(木)
定価:2,420円(本体2,200円+税10%)

内容について
  • 基本的な機能の解説
  • ブランチを扱う機能、マージの仕方
  • 簡単なタグの使い方
  • リモートリポジトリの使い方
  • 共用リポジトリを使った共同開発の基礎