Git の「コミット」と「プッシュ」の違い|初心者が知るべき基本を図解

git

「コミットとプッシュって何が違うの?」

Gitを使い始めたばかりの方なら、誰もが一度は抱く疑問です。どちらも「保存」に関連する操作ですが、実は全く異なる役割を持っています。

この記事では、コミットとプッシュの違いを初心者の方にも分かりやすく、具体例を交えながら解説していきます。

スポンサーリンク
  1. 結論:コミットとプッシュの違いを一言で
  2. ローカルリポジトリとリモートリポジトリ
    1. リポジトリとは?
    2. 図で理解する関係性
  3. コミット(commit)とは?
    1. コミットの役割
    2. コミットの基本的な使い方
    3. コミットメッセージの例
    4. コミットの特徴
  4. プッシュ(push)とは?
    1. プッシュの役割
    2. プッシュの基本的な使い方
    3. 初回プッシュ時
    4. プッシュの特徴
  5. コミットとプッシュの比較表
  6. 実際の作業フロー:add → commit → push
    1. ステップ1:ファイルを編集
    2. ステップ2:変更を確認
    3. ステップ3:ステージングエリアに追加
    4. ステップ4:コミット
    5. ステップ5:プッシュ
    6. 完全な実例
  7. よくある誤解と間違い
    1. 誤解1:「コミットすれば他の人も見られる」
    2. 誤解2:「プッシュすればコミットも自動で行われる」
    3. 誤解3:「毎回プッシュしないといけない」
    4. よくあるエラーとその原因
  8. いつコミットして、いつプッシュすべきか
    1. コミットするタイミング
    2. プッシュするタイミング
  9. プッシュ前の確認チェックリスト
    1. 1. コードは動作するか
    2. 2. 不要なファイルが含まれていないか
    3. 3. コミットメッセージは明確か
    4. 4. リモートと同期しているか
  10. プッシュ後の確認
    1. コマンドラインでの確認
    2. GitHubでの確認
  11. コミットとプッシュの使い分け実例
    1. ケース1:個人プロジェクト
    2. ケース2:チーム開発
    3. ケース3:バグ修正
  12. まとめ:コミットとプッシュの違い

結論:コミットとプッシュの違いを一言で

まず結論から言うと:

  • コミット(commit):自分のパソコン(ローカル)に変更を保存する
  • プッシュ(push):保存した変更をGitHub などのサーバー(リモート)に送信する

つまり、コミットは「ローカル保存」、プッシュは「共有のためのアップロード」です。

例えるなら:

  • コミット = 日記を自分のノートに書く
  • プッシュ = その日記をブログに投稿する

日記を書いただけでは誰も見られません。ブログに投稿して初めて、他の人が読めるようになります。

ローカルリポジトリとリモートリポジトリ

コミットとプッシュの違いを理解するには、まずリポジトリという概念を知る必要があります。

リポジトリとは?

リポジトリ(repository)とは、ファイルやフォルダの変更履歴を管理する「保管庫」のことです。

Gitには2種類のリポジトリがあります。

ローカルリポジトリ

  • あなたのパソコンの中にあるリポジトリ
  • 自分だけがアクセスできる
  • ネット接続がなくても使える
  • コミット操作はここに対して行われる

リモートリポジトリ

  • サーバー上(GitHub、GitLabなど)にあるリポジトリ
  • チームメンバー全員がアクセスできる
  • ネット接続が必要
  • プッシュ操作はここに対して行われる

図で理解する関係性

あなたのパソコン              インターネット              サーバー
┌─────────────┐         ┌─────────────┐
│ワークツリー     │         │               │
│(作業中)      │         │               │
└─────────────┘         │               │
       ↓ git add             │               │
┌─────────────┐         │               │
│ステージング    │         │               │
│エリア         │         │               │
└─────────────┘         │               │
       ↓ git commit          │               │
┌─────────────┐    git push    ┌─────────────┐
│ローカル       │ ───────────→  │リモート       │
│リポジトリ     │               │リポジトリ     │
│(保存済み)   │    git pull    │(共有)       │
│              │ ←───────────  │              │
└─────────────┘         └─────────────┘

この図のように、コミットとプッシュは全く異なる場所に対する操作なのです。

コミット(commit)とは?

コミットは、ローカルリポジトリに変更を記録する操作です。

コミットの役割

1. 変更の記録

ファイルの追加、編集、削除といった変更を、その時点のスナップショットとして保存します。

2. 履歴の作成

各コミットには:

  • 何を変更したか(差分)
  • 誰が変更したか(作成者)
  • いつ変更したか(日時)
  • なぜ変更したか(コミットメッセージ)

これらの情報が記録されます。

3. 復元ポイントの作成

問題が起きたとき、過去のコミット時点に戻ることができます。

コミットの基本的な使い方

コミットは2ステップで行います。

ステップ1:ステージング(git add)

まず、コミットしたいファイルを選びます。

# 特定のファイルをステージング
git add index.html

# すべての変更をステージング
git add .

ステップ2:コミット(git commit)

ステージングしたファイルをコミットします。

git commit -m "ログイン画面を作成"

-m の後に書くのがコミットメッセージで、何を変更したかを説明します。

コミットメッセージの例

# 良い例
git commit -m "ユーザー認証機能を追加"
git commit -m "バグ修正: メール送信エラーを解消"
git commit -m "デザイン変更: ボタンの色を青に統一"

# 悪い例
git commit -m "修正"
git commit -m "更新"
git commit -m "あああ"

後から見返したとき、何をしたか分かるメッセージを書くことが大切です。

コミットの特徴

ローカル操作のみ

コミットはあなたのパソコンの中だけで完結します。ネット接続は不要で、オフラインでも実行できます。

他のメンバーには見えない

コミットしただけでは、チームメンバーはあなたの変更を見ることができません。

何度でもできる

作業の進捗に応じて、こまめにコミットできます。

git commit -m "HTMLの骨組みを作成"
# 作業を進める
git commit -m "CSSでスタイリング"
# さらに作業
git commit -m "JavaScriptで動きを追加"

プッシュ(push)とは?

プッシュは、ローカルリポジトリのコミットをリモートリポジトリに送信する操作です。

プッシュの役割

1. 変更の共有

あなたがコミットした内容を、チームメンバーと共有できるようにします。

2. バックアップ

ローカルだけでなく、サーバー上にも保存されるため、パソコンが壊れてもデータが失われません。

3. チームとの連携

他のメンバーがあなたの変更を取り込んで、作業を進められるようになります。

プッシュの基本的な使い方

git push origin main

このコマンドの意味:

  • git push:プッシュを実行
  • origin:リモートリポジトリの名前(通常はorigin)
  • main:プッシュするブランチ名

初回プッシュ時

ブランチを初めてプッシュする場合は、追跡設定が必要です。

git push -u origin feature-login

-u オプション(--set-upstreamの略)で、今後 git push だけでプッシュできるようになります。

プッシュの特徴

ネット接続が必要

リモートリポジトリはサーバー上にあるため、インターネット接続が必須です。

コミットが前提

プッシュできるのは、コミット済みの変更のみです。コミットしていない変更はプッシュされません。

# これは失敗する
git add .
git push origin main
# エラー: コミットがないのでプッシュできない

# 正しい手順
git add .
git commit -m "新機能を追加"
git push origin main

チーム全体に影響

プッシュした内容は、他のメンバーも見られるようになります。未完成のコードをプッシュすると、チームに迷惑がかかる可能性があります。

コミットとプッシュの比較表

項目コミット(commit)プッシュ(push)
保存先ローカルリポジトリリモートリポジトリ
対象者自分だけチーム全員
ネット接続不要必要
実行頻度こまめに(作業の区切りごと)ある程度まとまったら
やり直し比較的簡単慎重に行うべき
コマンドgit commit -m "メッセージ"git push origin ブランチ名

実際の作業フロー:add → commit → push

実際の開発では、次のような流れで作業を進めます。

ステップ1:ファイルを編集

# index.htmlを編集
# style.cssを編集

ステップ2:変更を確認

git status

出力例:

On branch main
Changes not staged for commit:
  modified:   index.html
  modified:   style.css

ステップ3:ステージングエリアに追加

git add index.html style.css

# または全部まとめて
git add .

ステップ4:コミット

git commit -m "トップページのデザインを更新"

ここまでがローカルでの作業です。

ステップ5:プッシュ

git push origin main

これでリモートリポジトリに反映されました。

完全な実例

# 1. ファイルを編集(エディタで作業)

# 2. 現在の状態を確認
$ git status
On branch feature-login
Changes not staged for commit:
  modified:   login.html
  modified:   auth.js

# 3. 変更をステージング
$ git add login.html auth.js

# 4. ローカルリポジトリにコミット
$ git commit -m "ログイン機能のUIを実装"
[feature-login a1b2c3d] ログイン機能のUIを実装
 2 files changed, 45 insertions(+), 3 deletions(-)

# 5. リモートリポジトリにプッシュ
$ git push origin feature-login
Counting objects: 5, done.
Writing objects: 100% (5/5), 1.2 KiB | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/username/project.git
   e4f5g6h..a1b2c3d  feature-login -> feature-login

よくある誤解と間違い

誤解1:「コミットすれば他の人も見られる」

間違い:コミットしただけでは他の人は見られません

正しい:プッシュして初めて共有される

誤解2:「プッシュすればコミットも自動で行われる」

間違い:プッシュだけではコミットされません

正しい:必ずコミット → プッシュの順番

誤解3:「毎回プッシュしないといけない」

間違い:コミットするたびにプッシュする必要はありません

正しい:ローカルで複数回コミットしてから、まとめてプッシュできます

git commit -m "機能Aを追加"
git commit -m "機能Bを追加"
git commit -m "テストを追加"
# ここまでは全部ローカルのみ

git push origin main
# 3つのコミットがまとめてプッシュされる

よくあるエラーとその原因

エラー1:「Everything up-to-date」

$ git push origin main
Everything up-to-date

原因:新しいコミットがないため、プッシュするものがない

解決:コミットしてからプッシュする

エラー2:「Updates were rejected」

$ git push origin main
! [rejected]        main -> main (fetch first)
error: failed to push some refs

原因:リモートに自分の持っていない新しいコミットがある

解決:まず git pull で最新の変更を取り込む

git pull origin main
git push origin main

いつコミットして、いつプッシュすべきか

コミットするタイミング

こまめにコミット

  • 1つの機能が完成したら
  • バグを修正したら
  • テストを追加したら
  • リファクタリングが終わったら

コミットの粒度

良い例:

git commit -m "ユーザー登録フォームのHTMLを作成"
git commit -m "フォームのバリデーションを追加"
git commit -m "登録APIとの連携を実装"

悪い例:

git commit -m "色々変更"
# → 何を変更したか不明確

プッシュするタイミング

適切なタイミング

  • 1日の作業が終わったとき
  • 機能の実装が完了したとき
  • チームメンバーに共有したいとき
  • 安全にバックアップしたいとき

避けるべきタイミング

  • コンパイルエラーがあるとき
  • テストが失敗しているとき
  • 作業途中の未完成な状態
  • デバッグ用のコードが残っているとき

プッシュ前の確認チェックリスト

プッシュする前に、以下を確認しましょう。

1. コードは動作するか

# テストを実行
npm test

# ビルドが成功するか確認
npm run build

2. 不要なファイルが含まれていないか

git status

デバッグ用のファイルや個人設定ファイルが含まれていないか確認します。

3. コミットメッセージは明確か

git log --oneline -5

最近のコミットメッセージを見て、内容が分かりやすいか確認します。

4. リモートと同期しているか

git pull origin main

プッシュ前に最新の変更を取り込んでおくと、コンフリクトを防げます。

プッシュ後の確認

プッシュが成功したか確認しましょう。

コマンドラインでの確認

git log --oneline --graph

ローカルとリモートのコミット履歴が一致しているか見ます。

GitHubでの確認

  1. GitHubのリポジトリページを開く
  2. コミット履歴を確認
  3. 最新のコミットが表示されているか確認

コミットとプッシュの使い分け実例

ケース1:個人プロジェクト

# 朝、作業開始
git pull origin main

# 午前の作業
git add .
git commit -m "ヘッダーコンポーネントを作成"

git add .
git commit -m "フッターコンポーネントを作成"

# 昼休み前にプッシュ
git push origin main

# 午後の作業
git add .
git commit -m "サイドバーコンポーネントを作成"

# 夕方、作業終了時にプッシュ
git push origin main

ケース2:チーム開発

# feature ブランチで作業
git checkout -b feature-user-profile

# こまめにコミット
git commit -m "プロフィール画面のレイアウト作成"
git commit -m "プロフィール編集機能を実装"
git commit -m "画像アップロード機能を追加"

# 機能が完成したらプッシュ
git push origin feature-user-profile

# Pull Request を作成してレビュー依頼

ケース3:バグ修正

# バグ修正用ブランチを作成
git checkout -b bugfix-login-error

# 問題の原因を特定
git commit -m "ログインエラーの原因を特定"

# 修正を実装
git commit -m "バグ修正: ログイン時の認証エラーを解消"

# テストを追加
git commit -m "ログイン機能のテストを追加"

# すぐにプッシュして共有
git push origin bugfix-login-error

まとめ:コミットとプッシュの違い

最後に、コミットとプッシュの違いをもう一度整理しましょう。

コミット(commit)の本質

  • ローカルリポジトリへの保存
  • 自分専用のセーブポイント作成
  • 作業の区切りごとにこまめに実行
  • オフラインでも可能
  • やり直しが簡単

プッシュ(push)の本質

  • リモートリポジトリへの送信
  • チーム全体との共有
  • ある程度まとまってから実行
  • オンライン環境が必要
  • 慎重に行うべき

関係性

コミットなしでプッシュ → できない
プッシュなしでコミット → できる(ローカルのみ)
コミット → プッシュ → 正しい順序

実務での使い分け

シーンコミットプッシュ
作業の区切り✓ 実行× まだ
1日の終わり✓ 済み✓ 実行
機能完成✓ 済み✓ 実行
作業途中✓ 実行× まだ
バックアップしたい✓ 実行✓ 実行

覚えておきたいポイント

  • コミットは「自分用のメモ」、プッシュは「チームへの報告」
  • コミットは何度でもできるが、プッシュは慎重に
  • コミットしないとプッシュできない
  • プッシュしないと他の人には見えない
  • 両方とも必要不可欠な操作

初心者へのアドバイス

  1. まずはコミットとプッシュの違いを理解する
  2. 作業の区切りごとにこまめにコミット
  3. 1日1回はプッシュしてバックアップ
  4. チーム開発では、動作確認してからプッシュ
  5. 迷ったらコミットだけしておく(プッシュは後でもOK)

この理解があれば、Gitをより効果的に使いこなせるようになります。コミットとプッシュは、Gitの最も基本的で重要な操作です。最初は慣れないかもしれませんが、使い続けるうちに自然と身につきます。

あなたのGitライフがより快適になることを願っています!

コメント

タイトルとURLをコピーしました