- Yuhei
- Feb 15, 2018
Gitの基礎
Gitの基礎についてまとめてみます。
1.まえがき
これまでバージョン管理システムはSVN(Subversion)を使ってきた私ですが、
今回参画したプロジェクトではGitを使っているので、自分なりにポイントをまとめます。
2.Gitとは
Gitとは、ソースコードなどの変更履歴を管理するための分散型バージョン管理システムです。
ちなみにSVNは集中型(クライアント・サーバ型)のバージョン管理システムです。
このGitの利用環境には2つのタイプがあります。まず1つはWindowsとmacで利用できるGUIです。
視覚的にわかりやすくGitを利用できるようになっています。
そしてもう1つは、コマンドをキーボードで入力して使用するコンソールタイプです。
3.Gitの基礎
・リポジトリ
コンピュータ上のデータやプログラムなどを系統だてて保存している場所や、一元管理する仕組みです。
Gitのリポジトリはリモートリポジトリとローカルリポジトリに分類されます。
・リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリです。
・ローカルリポジトリ
ローカル環境(自分のマシン)に配置し、自分の作業履歴をバージョン管理するリポジトリです。
・ワークツリーとインデックス
Gitの管理下に置かれた、実際に作業をしているディレクトリのことをワークツリーと呼びます。
そして、Gitではローカルリポジトリとワークツリーの間にはインデックスというものが存在しています。
インデックスとは、ローカルリポジトリにコミットする準備をするための場所のことでステージングエリアともいいます。
・コミット
ファイルやディレクトリの変更を、ローカルリポジトリに記録するにはコミットという操作を行います。
コミットを実行すると、ローカルリポジトリの内では、前回コミットした時の状態から現在の状態までの差分を記録したコミット(またはリビジョン)と呼ばれるものが作成されます。
このコミットは、次の図のように時系列順につながった状態でリポジトリに格納されています。
このコミットを最新の物から辿ることで、過去の変更履歴やその内容を知ることができるようになっています。
・プッシュ
リモートリポジトリで自分の手元のローカルリポジトリの変更履歴を共有するには、ローカルリポジトリ内の変更履歴をアップロードする必要があります。
そのために、Gitではプッシュ(Push)という操作を行います。
Pushを実行すると、リモートリポジトリに自分の変更履歴がアップロードされて、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。
・ブランチ
ブランチとは、履歴の流れを分岐して記録していくためのものです。
プロジェクトから枝分かれさせることをよく「ブランチを切る」といいます。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
また分岐したブランチは他のブランチを統合することができ、複数人でブランチを切って開発した内容を1つにまとめることが出来ます。
5.基本的な操作
Git使用時の基本的な流れ
それではここで実際にGitを使用するときの流れを解説していきます。Gitを利用するときは、大きな4つの工程があります。
1.リポジトリを新規作成、またはリモートリポジトリから複製(クローン)してローカルリポジトリにワークツリーを作成します。
2.必要な変更を加えたら、ワークツリーでの作業内容をインデックス(ステージングエリア)にステージします。
3.変更をローカルリポジトリにコミットできるようになりますので、コミットメッセージを記述してコミットします。
4.リモートリポジトリにプッシュすることで変更内容をオンライン上で更新できます。
以上が基本的な流れです。Gitは初心者の方にとって耳馴染みのない言葉が多いため、「ハードルが高そう」と思われがちですが、
専門用語さえ理解できれば基本的な流れはそこまで複雑ではありません。
6.基本的なコマンド
$ git init
ーリポジトリの初期化
Gitでバージョン管理を始める際、リポジトリを初期化を行うことで、
git initを実行したディレクトリに.gitディレクトリが作成され、このディレクトリに現在のディレクトリ以下を管理するリポジトリデータが格納されます。
このディレクトリ以下をこのリポジトリに付随したワークツリーと呼び、ワークツリーでファイルの編集等を行います。
$ git add
ーインデックスにファイルを追加
ワークツリーで作成,編集されたファイルはそれだけではリポジトリのバージョン管理の対象にはならないので、
Gitリポジトリの管理対象にするためにインデックスと呼ばれる一時的な場所へ登録する必要があります。
それを行うコマンドがgit addです
$ git commit
ーリポジトリの履歴を記録
インデックスに登録されているファイル群を実際にリポジトリの履歴として記録します。
$ git log
ーコミットログを確認
誰がいつコミットしたのか、どのような差分が生まれたのかを確認できます。
$ git diff
ー変更差分を確認する
現在のワークツリー(作業しているファイル)とインデックスそして、最新のコミット間の差分を確認できます。
7.終わりに
まだまだGitの機能やコマンドはありますが、今回はここまでとします。
ありがとうございました。
Comments
Add your comment