そもそも Git とは?
「Git って何?」「なぜ使うの?」という疑問にゼロから答えます。
プログラミングを始めると必ず出てくる Git の正体を、たとえ話を交えてわかりやすく解説します。
まず「バージョン管理」とは?
概念
ファイルの変更履歴を記録・管理する仕組みのことです。
バージョン管理がないと、こんなことが起きます:
よくある「バージョン管理なし」の悲劇
バージョン管理ツールを使うと、ファイルを1つのまま保ちながら、 すべての変更履歴を自動で記録できます。 いつでも過去の状態に戻せるので、安心して編集できます。
Git とは?
用語
Git は、ソースコードの変更履歴を管理するためのツール(分散型バージョン管理システム)です。
2005年に Linux の生みの親リーナス・トーバルズが開発しました。
変更を記録する
いつ・誰が・何を変えたか、すべてのスナップショットを保存する。
いつでも戻れる
バグを入れてしまっても、1つ前のセーブデータに戻せる。
チームで開発できる
複数人が同じコードを別々に変更しても、あとで合流(マージ)できる。
Git がない世界 vs Git がある世界
😰 Git がない世界
- ✗ ファイルを上書きしたら元に戻せない
- ✗ バックアップのためにファイルを何十個もコピー
- ✗ 複数人での開発で誰かが誰かの変更を消してしまう
- ✗ 「昨日まで動いていたのに…」どこで壊れたか不明
- ✗ 新機能を試したいが本番コードを壊しそうで怖い
😊 Git がある世界
- ✓ いつでも過去の状態に戻せる(セーブデータ感覚)
- ✓ ファイルは1つのまま、履歴だけが積み重なる
- ✓ 誰がいつ何を変えたかすべて記録されている
- ✓ 複数人の変更を安全に合流(マージ)できる
- ✓ ブランチで安心して新機能を試せる
「分散型」って何が違うの?
概念Git は分散型バージョン管理システムです。 各自のPCに完全なリポジトリ(履歴ごと)がコピーされます。 サーバーが落ちていても作業を続けられ、後でまとめて同期できます。
集中型(旧来の方式)
サーバーが止まると全員作業不能
分散型(Git の方式)
履歴あり
履歴あり
履歴あり
各PCが完全なコピーを持つ
Git の基本用語
用語集リポジトリ(Repository)
用語ファイルと変更履歴をすべて保存する「プロジェクトの保管庫」。.git フォルダとして存在する。
コミット(Commit)
用語ある時点の変更を記録したスナップショット。「セーブデータ」のイメージ。メッセージを付けて何の変更か説明する。
ブランチ(Branch)
用語本流に影響を与えずに変更を試せる「作業用のコピー」。作業が終わったら本流に合流(マージ)できる。
ワーキングツリー
用語実際にファイルを編集する場所。普段目で見て触っているフォルダそのもの。
ステージングエリア
概念次のコミットに含める変更を一時的に置いておく場所。「この変更だけ記録する」と選べる。
クローン(Clone)
概念リモートリポジトリ(GitHubなど)から自分のPCへ丸ごとコピーすること。
Git は入っている?確認してみよう
コマンドターミナル(Mac: Terminal / Windows: Git Bash)を開いて、以下を入力してください。
$ git --version # インストール済みの場合(バージョン番号は異なってよい) git version 2.43.0 # 入っていない場合 command not found: git
Mac の場合
Xcode Command Line Tools に含まれています。
インストールは xcode-select --install を実行してください。
Windows の場合
Git for Windows(git-scm.com)から公式インストーラーをダウンロードして実行してください。