Gitを使う理由
Gitはファイルのバージョン管理をするために用いられる。
バージョン管理をしないと、
- 最新のファイルが分からない
バージョンを管理すると
- ファイルの最新の状態が分かる
- いつ・誰が・何を変更したかが分かる
- 以前の状態にも戻せる
GitHubとは
GitHubは「コードのホスティングサービス」、すなわちファイルやファイルの変更履歴を、オンライン上で扱ってくれるサービスである。
- GitHubの特徴
- プルリクエストで複数人開発ができる
- 世界でどのような開発が行われているか見ることができる
Gitの初期設定
$ git config --global user.name "github user name"
# github user nameにはgithubで登録したユーザネームを入力する
$ git config --global user.email github@example.com
# github@example.comにはgithubで登録したeメールアドレスを入力する
$ git config --global core.editor "atom --wait"
# 登録したいエディタを設定する。上はAtomの例。ほかのエディタを使っている場合は各自で調べてみてください。
登録できているか確認してみよう。
# catコマンドでファイルの中身を確認できる
$ cat ~/.gitconfig
[user]
email = github@example.com
name = github user name
[core]
editor = atom --wait
のようになっているはず。
Gitはどのようにバージョンを管理しているか
バージョンはコミット(ファイル変更の記録)によって管理されている。コミットは直前のコミットを保存しているので、それをたどることで以前のバージョンを復元できる。
コミットするとスナップショットが記録される。これによって、バージョンを枝分かれさせるブランチや、ブランチを統合するマージといった操作が高速になり、複数人で開発するときのスピードを上げることができる。
大まかなデータの流れ
ワークツリー ⇄ ローカルリポジトリ ⇄ リモートリポジトリ(GitHub)
- ワークツリー
- Gitの管理下に置かれた、実際に作業をしているディレクトリのこと
- リポジトリ
- ファイルや変更履歴などを置いておく場所のこと
- ローカルリポジトリ
- 自分のPCの中にあるリポジトリのこと
- リモートリポジトリ
- 専用のサーバに配置される、複数人で共有できるリポジトリのこと
ローカル(自分のPCの内部)は
- リポジトリ
- ステージ
- ワークツリー
という3つの領域に分かれている。ステージは、変更したファイルを一時的に保存しておくための領域である。ステージした変更を、リポジトリに記録することをコミットするという。
Gitのデータ構造
リポジトリには
- 1. 圧縮ファイル
- ファイルの内容を圧縮したもの。
- 2. ツリーファイル
- ファイル名と、それに対応する圧縮ファイルを記録したもの
フォルダ構造を持たない圧縮ファイルに構造を与えている - 3. コミットファイル
- ツリー、親コミット(直前のコミット)、作成者、日付、メッセージが記録されたファイル
が保存されている。Gitのコマンドは、これらのデータ構造に対して操作を行っている。