Gitのcommitとpushの違い|保存と共有を初心者向けに解説

#Git#GitHub#commit#push#初心者
MAO先生と生徒うみちゃん、生徒りくちゃんが教室でGitのcommitとpushの違いを学ぶイラスト
MAO先生と生徒たちを紹介

この記事でわかること

  • Gitのcommitpushの違い
  • git addgit commitgit pushの順番
  • ローカルリポジトリリモートリポジトリの関係
  • 初学者が間違えやすいpush前の確認ポイント
  • GitHubへ共有するときに気をつけたい安全な流れ

結論・重要ポイント

  1. commitは、自分のPC上のローカルリポジトリに変更の記録を作る操作です。
  2. pushは、ローカルにあるcommitをGitHubなどのリモートリポジトリへ送る操作です。
  3. git addで記録したい変更を選び、git commitで記録を作り、git pushで共有します。
  4. commitしただけではGitHub上には反映されません。
  5. push前には、差分、ブランチ、秘密情報が含まれていないかを確認するのが安全です。

対象読者と前提知識

この記事は、Gitを学び始めて、保存したはずなのにGitHubへ出ていないcommitとpushのどちらをすればよいか分からないと迷っている初学者向けです。

前提知識は、ファイルを編集して保存できること、ターミナルで短いコマンドを実行できること程度で問題ありません。ここでは、1人または小さなチームでGitHubへコードを共有する場面を想定します。

3人による授業形式の会話

生徒りくちゃん・疑問を感じている

生徒りくちゃん

Gitでcommitしたのに、GitHubの画面では変更が見えませんでした。これは、保存に失敗しているということなのでしょうか?

MAO先生・説明中

MAO先生

結論から言うと、commitは自分のPC上へ記録を作る操作です。GitHubへ送るには、そのあとでpushする必要があるのです。

生徒うみちゃん・興味深く聞いている

生徒うみちゃん

じゃあ、毎回いきなりgit pushすればいいじゃん!それならGitHubにもすぐ出るでしょ?

MAO先生・注意している

MAO先生

そこは順番が大切です。pushで送れるのは、すでに作られたcommitです。まずgit addで記録したい変更を選び、git commitで記録を作ってから、git pushで共有します。

生徒りくちゃん・興味深く聞いている

生徒りくちゃん

つまり、commitは手元の記録、pushは共有先へ送る操作、ということですね!

MAO先生・笑顔

MAO先生

その通りです。よく気づきましたね!ノートに清書するのがcommit、そのノートをチームの棚へ置くのがpushに近いイメージです。

生徒うみちゃん・疑問を感じている

生徒うみちゃん

でも、commitを細かく作りすぎたら面倒じゃない?全部まとめて1回でよくない?

MAO先生・説明中

MAO先生

実は、あとで見返すなら小さめのcommitの方がよいケースもあるのです。修正理由が分かりやすく、問題が起きたときにどの変更が原因か追いやすくなります。

生徒りくちゃん・疑問を感じている

生徒りくちゃん

pushするときは、どの場所へ送るかも決まっているのでしょうか?originmainという言葉を見たことがあります。

MAO先生・自信のある表情

MAO先生

はい。originはよく使われるリモート名、mainはブランチ名の一例です。git push origin mainは、手元のmainブランチのcommitを、originというリモートへ送る、という意味になります。

生徒うみちゃん・自信のある表情

生徒うみちゃん

pushで怒られたら、強制的に上書きすれば早いってこと?

MAO先生・困っている

MAO先生

それは危険な早とちりです。強制pushは他の人の変更を失わせる可能性があります。まずgit statusgit pullの必要性を確認し、チームのルールに沿って原因を見てから対応しましょう。

コード・操作手順・具体例

1. 変更状況を確認する

まず、どのファイルが変更されたかをgit statusで確認します。

git status

変更されたファイル、まだGitで追跡していないファイル、commit対象に入っているファイルを確認できます。

2. commitに入れる変更を選ぶ

git addは、次のcommitへ入れたい変更を選ぶ操作です。

git add src/example.js

複数ファイルをまとめて入れることもできますが、初学者のうちは、意図したファイルだけを指定すると確認しやすくなります。

git add src/example.js README.md

※秘密情報、不要な一時ファイル、大きな生成物が混ざっていないかを確認してからgit addしてください。

3. commitを作る

git commitで、選んだ変更をローカルリポジトリへ記録します。

git commit -m "問い合わせフォームの入力チェックを追加"

commitメッセージは、何を変えたかが後から分かる内容にします。例えば修正だけではなく、何を修正したかまで書くと読み返しやすくなります。

4. GitHubへpushする

commitをGitHubなどのリモートへ送るには、git pushを使います。

git push origin main

この例では、originというリモートへ、mainブランチのcommitを送ります。実際のブランチ名がmainではない場合は、作業中のブランチ名に合わせます。

5. よく使う確認コマンド

commit前後で次の確認を入れると、間違いを減らせます。

git status
git diff
git log --oneline -5

git diffは、まだcommitしていない変更の差分確認に使います。git log —oneline -5は、直近5件のcommitを短く確認する例です。

よくある誤解や失敗

commitしたらGitHubにも反映されると思ってしまう

commitはローカルの記録です。GitHubへ反映するには、別途pushが必要です。

git addを保存コマンドだと思ってしまう

git addは、commitに入れる候補を選ぶ操作です。記録として残るのはgit commitを実行したあとです。

push前に差分を見ず、不要なファイルを送ってしまう

git statusgit diffで確認してからcommitする習慣をつけると、設定ファイル、一時ファイル、秘密情報の混入を減らせます。

エラー時にすぐ強制pushしようとする

non-fast-forwardのようなpushエラーは、リモート側に自分の手元にない変更があるときにも起きます。強制pushは影響が大きいため、まず原因を確認します。

commitメッセージが抽象的すぎる

修正更新だけでは後から内容を追いにくくなります。ログインエラー時の表示を修正のように、対象と内容を入れると実務で役立ちます。

Q&A

Q. commitだけしてpushしない状態は悪いことですか?

A. 悪いことではありません。途中作業を手元で整理するためにcommitを作ることはあります。ただし、チームで共有すべき変更は、必要な確認をしたうえでpushします。

Q. pushしたあとに間違いに気づいたらどうすればよいですか?

A. 基本は、追加のcommitで修正します。公開済みの履歴を書き換える操作は影響が大きいため、チームのルールやリポジトリの運用方針を確認してから行います。

Q. originとは何ですか?

A. originは、Gitでよく使われるリモート名です。多くの場合、cloneした元のGitHubリポジトリを指します。ただし、必ずGitHubとは限らないため、必要に応じてgit remote -vで確認します。

Q. main以外のブランチへpushすることもありますか?

A. あります。開発用ブランチを作って作業する場合は、そのブランチへpushし、Pull Requestで確認してからmainへ取り込む流れがよく使われます。

要点まとめ

  • commitはローカルに変更の記録を作る操作です。
  • pushはローカルのcommitをリモートへ送る操作です。
  • 基本の流れは、git statusgit addgit commitgit pushです。
  • push前には、差分、ブランチ、秘密情報の混入を確認します。
  • 強制pushや履歴書き換えは影響が大きいため、初学者は特に慎重に扱います。

授業に登場する3人については、MAO先生のIT授業 キャラクター紹介で確認できます。

公式資料・参考資料

内容に合うCTA

GitやGitHubは、コマンドを覚えるだけでなく、どの単位でcommitするかpush前に何を確認するかチームでどう共有するかを決めると実務で使いやすくなります。

小規模チームや業務システム開発で、Git運用の手順化、レビュー前の確認、GitHub連携の整理に不安がある場合は、MAO工房へご相談ください。

MAO工房に相談できます

GitとGitHubの運用ルールを相談できます

commitの分け方、push前の確認、共有リポジトリでの作業手順など、初学者にも伝わる開発運用ルールづくりを支援します。

  • ✓ commit前の確認手順を整理
  • ✓ pushと共有ルールを明文化
  • ✓ 小規模チームの開発運用にも対応