##はじめに
Gitとは、一言にまとめるとアプリのバージョンを管理するツールの1つです。
(それ以外には、MercurialやSubversionがある)
新しいアップグレードをしてみたけど、1つ前の状態に戻したい。
そんなんときに役立つツールとなっています。
今回は、GUIの操作方法ではなくコマンドラインでGitの使い方を紹介します。
Gitのコミット方法についてはこちらで解説しています。
(GUIの使い方はこちらの投稿がとても参考になります。)
###Gitの必要性
Gitに限らずバージョン管理のツールを使うメリットは様々です。
・ファイルの変更時にバックアップが不要になる
・変更をしても戻れるので安心して作業できる
・複数人でファイルを変更できるので共同開発を行える
###Gitが保存する内容
Gitがファイルの変更に伴い、
下記の情報を保持して1つのバージョンとします。
・いつ
・誰が
・どのファイルの、どの箇所を
・どんなメッセージを残して変更したか
##GitHub(ギットハブ)ってなに?
GitHubとは、Gitを使って管理している情報を
オンライン上で共有や管理ができるサービスです。
例えば、BootstrapやjQuery、
Ruby on RailsもGitHubでチーム開発が行われている
オープンソースです。
##バージョン管理の方法
プログラミング言語を学んでいく中で、
聞きなれない用語も出てきますので1つずつ解説していきます。
###リポジトリ
リポジトリとはバージョンの”保存先”のことです。
リポジトリという箱をイメージし、
中にGit(バージョンの情報)を保管しているイメージと考えましょう。
リポジトリには2種類あります。
####ローカルリポジトリ
ローカルリポジトリは、自分の作業時に使われるリポジトリのことで
自分のPCやcloud9上で作られるリポジトリのことです。
####リモートリポジトリ
リモートリポジトリとは、ローカルリポジトリを
GitHub上に反映させたものになります。
チームでの共有やバックアップを目的として
ネットワーク先にあるリポジトリのことです。
###コミット
Gitでは、1つ1つのバージョンを”コミット”といいます。
コミットには様々な情報が入っているので重要な部分のみ紹介します。
・リビジョン番号(1e92345894839f73489348cのような値)
・コミットした人
・コミットした日時
・コミットした後と前のファイルの内容の違い
・コミットメッセージ
・親コミット(1つ前のコミットのリビジョン番号)
####リビジョン番号
リビジョン番号はIDのような役割と覚えておきましょう。
####コミットメッセージ
コミットメッセージは、コミット時に必要なメッセージです。
コミットが多くなれば、どんな変更があったのか
ファイルの内容を1つ1つ確認するのは手間です。
そこで、簡単なメッセージを書いておくものです。
####親コミット
親コミットとは1つ前のコミットのことです。
コミット時に1つ前のコミットのリビジョン番号を持っていることで
過去のコミット(親コミット)を辿ることができ変更履歴を管理できます。
###ワークツリーとインデックス
次に紹介するのは実際にコミットする際に
理解しておく必要があるワークツリーとインデックスについてです。
####ワークツリー
ワークツリーとは、Gitで管理されている自分が作業しているフォルダ内です。
ワークツリー(作業しているファイル)をコミットする際
フォルダ全てをコミットする必要はありませんので
変更箇所を選択することが必要です。
この変更箇所を選択することを"ステージする"といいます。
####インデックス
インデックスとは、ローカルリポジトリへコミットする前の中間地点です。
ステージングエリアともいわれる場所です。
ワークツリーからローカルリポジトリへコミットする際、
インデックスというエリアでコミットする変更箇所を選ぶ段階があります。
その後、コミットを行いバージョン管理が行えます。
コミットされる箇所はインデックスにステージされた変更箇所のみです。
つまり、リポジトリしたい箇所はインデックスにステージする必要があります。
##まとめ
なんとなくわかっていたつもりでも、
文字にして読むと改めて理解できたのではないでしょうか。
大まかなバージョン管理の流れは、ワークツリー→
インデックス→ローカルリポジトリと移動します。
今回の内容をまとめると以下になります。
・コミットとは1つのバージョン
・リポジトリには2種類ある
・親コミットの情報のおかげで辿れる
・インデックスへステージする必要がある
Gitのコミット方法についてはこちらで解説しています。