Gitの基本
バージョン管理の基礎となるコマンドを覚えよう
Gitの3つのエリア
Gitでは、ファイルの変更は3つのエリアを通じて管理されます。 この流れを理解することが、Git操作の基本です。
ワーキングディレクトリ
実際にファイルを編集する場所
ステージングエリア
コミットする変更を準備する場所
リポジトリ
変更履歴が保存される場所
編集 ── git add ──▶ ステージング ── git commit ──▶ リポジトリ
(作業) (準備) (記録)git init - リポジトリの初期化
新しいプロジェクトでGit管理を始めるには、git init を実行します。 これにより .git ディレクトリが作成され、 バージョン管理が有効になります。
# 新しいプロジェクトを作成してGitを初期化
$ mkdir my-project
$ cd my-project
$ git init出力例: Initialized empty Git repository in /home/user/my-project/.git/
git add - ステージングに追加
変更したファイルをコミット対象として登録します。git add で ステージングエリアに追加しないと、コミットに含まれません。
# 特定のファイルをステージング
$ git add index.html
# 複数ファイルをステージング
$ git add index.html style.css
# カレントディレクトリの全変更をステージング
$ git add .
# 変更の一部だけをステージング(対話モード)
$ git add -pポイント
git add . は便利ですが、意図しないファイル(パスワードや一時ファイルなど) も追加してしまう可能性があります。.gitignore を設定するか、 ファイル名を個別に指定する習慣をつけましょう。
git commit - 変更を記録
ステージングエリアの変更をリポジトリに記録します。 各コミットには一意のハッシュ値(ID)が割り当てられ、後から参照できます。
# メッセージ付きでコミット
$ git commit -m "初期ページを作成"
# 詳細なメッセージをエディタで書く
$ git commit
# add と commit を同時に(追跡済みファイルのみ)
$ git commit -am "ヘッダーのスタイルを修正"良いコミットメッセージの例:
- ✅
"ログインフォームのバリデーションを追加" - ✅
"ユーザー一覧のページネーションを修正" - ❌
"修正"- 何を修正したか分からない - ❌
"update"- 何を更新したか分からない
git status - 状態の確認
現在のリポジトリの状態を確認します。どのファイルが変更されたか、 ステージングに追加されたか、未追跡かを一目で把握できます。
$ git status出力例:
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
script.js緑色 = ステージング済み(コミットに含まれる)
赤色 = 変更はあるがステージング未追加
git log - コミット履歴の確認
これまでのコミット履歴を確認します。各コミットのハッシュ、作者、日時、メッセージが表示されます。
# 基本のログ表示
$ git log
# 1行表示(見やすい)
$ git log --oneline
# グラフ付き(ブランチの分岐が視覚的に分かる)
$ git log --oneline --graph --all
# 最新3件だけ表示
$ git log -3--oneline の出力例:
a1b2c3d ヘッダーのスタイルを修正
e4f5g6h ログインフォームを追加
i7j8k9l 初期ページを作成git diff - 差分の確認
ファイルの変更内容を詳細に確認できます。何を変更したかをコミット前にチェックする習慣をつけましょう。
# ワーキングディレクトリの変更を確認
$ git diff
# ステージング済みの変更を確認
$ git diff --staged
# 特定のファイルの差分
$ git diff index.html
# 2つのコミット間の差分
$ git diff a1b2c3d e4f5g6h出力例:
diff --git a/index.html b/index.html
--- a/index.html
+++ b/index.html
@@ -1,3 +1,4 @@
<h1>Hello</h1>
-<p>古いテキスト</p>
+<p>新しいテキスト</p>
+<p>追加された行</p>-(赤)は削除された行、+(緑)は追加された行を示します。
.gitignore - 追跡しないファイルの指定
.gitignore ファイルに パターンを記述すると、Gitが追跡しないファイルを指定できます。 パスワードや一時ファイル、ビルド成果物などを除外するのに使います。
# .gitignore の例
# 環境変数ファイル(パスワードなどが入る)
.env
.env.local
# 依存パッケージ(npm install で復元できる)
node_modules/
# ビルド成果物
dist/
build/
.next/
# OS のシステムファイル
.DS_Store
Thumbs.db
# ログファイル
*.log
# エディタの設定ファイル
.vscode/
.idea/重要
一度コミットしたファイルは .gitignore に追加しても追跡が解除されません。git rm --cached ファイル名 で追跡を解除してからコミットする必要があります。
基本的な作業フロー
日常的なGit操作の流れをまとめます。この一連の流れを繰り返してコードを管理します。
# 1. 現在の状態を確認
$ git status
# 2. ファイルを編集(エディタで作業)
# 3. 変更内容を確認
$ git diff
# 4. 変更をステージングに追加
$ git add index.html style.css
# 5. ステージングの内容を確認
$ git diff --staged
# 6. コミット
$ git commit -m "ナビゲーションバーを追加"
# 7. 履歴を確認
$ git log --onelineその他の便利なコマンド
git restore ファイル名ワーキングディレクトリの変更を取り消すgit restore --staged ファイル名ステージングを取り消す(変更は残る)git show コミットID特定のコミットの詳細を表示git stash変更を一時退避するgit stash pop退避した変更を復元する確認クイズ
1 / 4Gitの3つのエリアの正しい流れはどれ?