Git

分散型バージョン管理システムで、ソースコードの変更履歴を管理する

バージョン管理開発ツール

Git とは

Git は、Linus Torvalds が 2005 年に Linux カーネルの開発のために作成した分散型バージョン管理システムである。各開発者がリポジトリの完全なコピーを持ち、オフラインでもコミットやブランチ操作ができる。

基本概念

Working Directory → Staging Area → Local Repository → Remote Repository
  (作業ディレクトリ)    (git add)      (git commit)       (git push)
概念 説明
コミット 変更のスナップショット
ブランチ コミットへのポインタ
HEAD 現在のブランチの先頭
リモート GitHub 等のリモートリポジトリ
マージ ブランチを統合
リベース コミット履歴を書き換えて統合

よく使うコマンド

# 基本操作
git add .                    # ステージング
git commit -m "Add feature"  # コミット
git push                     # リモートにプッシュ
git pull                     # リモートから取得 + マージ

# ブランチ
git checkout -b feature/login  # ブランチ作成 + 切り替え
git merge feature/login        # マージ
git branch -d feature/login    # ブランチ削除

# 履歴
git log --oneline --graph      # コミット履歴
git diff                       # 差分表示
git blame file.ts              # 行ごとの最終変更者

# 取り消し
git reset --soft HEAD~1        # 直前のコミットを取り消し (変更は保持)
git stash                      # 変更を一時退避
git stash pop                  # 退避した変更を復元

マージ vs リベース

観点 マージ リベース
履歴 マージコミットが残る 直線的な履歴
コンフリクト解決 1 回 コミットごとに解決
安全性 履歴を書き換えない 履歴を書き換える
推奨場面 PR のマージ ローカルブランチの整理

.gitignore

node_modules/
dist/
.env
*.log
.DS_Store

GitHub との関係

Git はバージョン管理ツール、GitHub は Git リポジトリのホスティングサービス。GitHub は PR、Issue、Actions (CI/CD) などの協業機能を提供する。

SVN との違い

観点 Git (分散型) SVN (集中型)
リポジトリ 各開発者が完全コピー サーバーに 1 つ
オフライン作業
ブランチ 軽量 (ポインタ) 重い (ディレクトリコピー)
速度 高速 (ローカル操作) 低速 (サーバー通信)

理論と実装の両面から学ぶなら関連書籍が参考になる。

関連用語